Sql server SQL Server 2005查找数据库中特定数据类型的所有列
是否有方法查询系统表以查找数据库中具有特定数据类型的所有列 例如,如果我需要知道表名和数据类型=Sql server SQL Server 2005查找数据库中特定数据类型的所有列,sql-server,sql-server-2005,Sql Server,Sql Server 2005,是否有方法查询系统表以查找数据库中具有特定数据类型的所有列 例如,如果我需要知道表名和数据类型=ntext 有办法吗?试试这个: SELECT a.name -- OR a.* FROM syscolumns a INNER JOIN systypes b ON a.xtype = b.xtype AND b.name = 'ntext' -- OR OTHER DATA TYPE. 试试这个 SELECT o.name AS 'Table Name', c.name AS
ntext
有办法吗?试试这个:
SELECT a.name -- OR a.*
FROM syscolumns a INNER JOIN systypes b
ON a.xtype = b.xtype
AND b.name = 'ntext' -- OR OTHER DATA TYPE.
试试这个
SELECT o.name AS 'Table Name', c.name AS 'Column Name' FROM sysobjects AS o
INNER JOIN syscolumns AS c ON o.name = c.object_id
INNER JOIN systypes AS t ON t.xtype = c.xtype
WHERE b.name = ' ntext'
希望这有帮助。我知道这个问题已经得到了回答,但我想将表名添加到结果集中,而这个查询就是这样做的
SELECT so.name, sc.name
FROM sys.objects so
JOIN sys.columns sc ON so.object_id = sc.object_id
JOIN sys.types stp ON sc.user_type_id = stp.user_type_id
AND stp.name = 'ntext'
WHERE so.type = 'U' -- to show only user tables
SELECT a.name, o.name AS TableName, o.type, a.id, o.object_id, o.schema_id
FROM sys.syscolumns AS a INNER JOIN sys.systypes AS b ON a.xtype = b.xtype
AND b.name = 'char'
AND a.length = 6 INNER JOIN
sys.objects AS o ON a.id = o.object_id
WHERE (o.type = 'u')
AND (o.schema_id = 1)
这非常适合我需要查找的内容,只是我需要知道该列所在的表。我如何修改它以包含表名?不确定这是否是最好的方法,但这对我来说非常有效<代码>从sys.syscolumns中选择a.name、o.name作为TableName、o.type、a.id、o.object_id、o.schema_id作为内部连接sys.systypes作为b在a.xtype=b.xtype和b.name='char'和a.length=6内部连接sys.objects作为o在a.id=o.object_id上,其中(o.type='u')和(o.schema_id=1)适用于新来者@德拉基的评论可能不适合你。这是因为redudant长度约束。使用此选项:
选择a.name,o.name作为TableName,o.type,a.id,o.object\u id,o.schema\u id,a.length FROM sys.syscolumns作为内部连接sys.systypes作为b在a.xtype=b.xtype上,b.name='YOUR_DATA\u type'作为o在a.id=o.object\u id上,其中(o.type='u')和(o.schema\u id=1)
我添加了和a。length=6
在我的帖子中有一个原因,但就是不记得为什么了:/不过,感谢您关注新来者。由于b没有别名,无法找到带有b.name的错误