SQL Server 2005 найти все столбцы в базе данных для определенного типа данных - PullRequest
2 голосов
/ 04 июня 2011

Есть ли способ запросить системные таблицы, чтобы найти все столбцы в базе данных, которая имеет определенный тип данных.

Например, если мне нужно знать имя таблицы и столбец, в котором тип данных = ntext

Есть ли способ сделать это?

Ответы [ 4 ]

6 голосов
/ 04 июня 2011

Попробуйте это:

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.
2 голосов
/ 04 июня 2011

Попробуйте это

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' 

Надеюсь, это поможет.

1 голос
/ 31 мая 2012

Я знаю, что на этот вопрос уже дан ответ, но я хотел добавить имя таблицы в набор результатов, и этот запрос делает это.

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)
1 голос
/ 04 июня 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...