TSQL:如何检查列是否启用了全文?

Kee*_*ker 13 t-sql sql-server full-text-search sql-server-2005

我需要修改列定义,但我想检查列是否首先启用了全文.有没有办法在TSQL脚本中进行这样的检查?

我正在使用SQL Server 2005.

Chr*_*n.K 10

您可以尝试使用COLUMNPROPERTY()函数.

DECLARE @value INT;
SELECT @value = COLUMNPROPERTY(OBJECT_ID('schema.table'), 'column_name', 'IsFulltextIndexed')

IF (@value = 1)
  PRINT 'Fulltext column'
ELSE
  PRINT 'No Fulltext column'
Run Code Online (Sandbox Code Playgroud)


mar*_*c_s 9

你可以尝试这样的事情:

SELECT * 
FROM sys.columns c 
INNER JOIN sys.fulltext_index_columns fic ON c.object_id = fic.object_id 
                                          AND c.column_id = fic.column_id
Run Code Online (Sandbox Code Playgroud)

如果需要将其限制为给定的表,请使用以下命令:

SELECT * 
FROM sys.columns c 
INNER JOIN sys.fulltext_index_columns fic ON c.object_id = fic.object_id 
                                          AND c.column_id = fic.column_id
WHERE c.object_id = OBJECT_ID('YourTableNameHere')
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这个答案,因为它显示了所有全文索引列以及列ID.这允许您通过document_count desc`运行类似`SELECT display_term,column_id,document_count FROM sys.dm_fts_index_keywords(DB_ID('DB_NAME'),OBJECT_ID('TABLE_NAME'))的命令,以显示所有条款及其索引位置. (2认同)