在CONTAINS-sqlserver中使用CAST或CONVERT

在CONTAINS-sqlserver中使用CAST或CONVERT,sql,sql-server,Sql,Sql Server,我试图在SQL查询中使用CAST或CONVERT函数,如下所示: SELECT * FROM [SQL_BMS].[dbo].[GEID] WHERE CONTAINS(CONVERT(nvarchar(max), NUID), 'titre') 或 但我有一些错误: 关键字“CONVERT”附近的语法不正确 或 关键字“as”附近的语法不正确 那么,如何将我的NUID列从Int转换为nvarchar?试试以下方法: SELECT * FROM [SQL_BMS].[dbo].

我试图在SQL查询中使用
CAST
CONVERT
函数,如下所示:

SELECT *
FROM [SQL_BMS].[dbo].[GEID]
WHERE CONTAINS(CONVERT(nvarchar(max), NUID), 'titre')

但我有一些错误:

关键字“CONVERT”附近的语法不正确

关键字“as”附近的语法不正确

那么,如何将我的
NUID
列从
Int
转换为
nvarchar

试试以下方法:

    SELECT *
    FROM [SQL_BMS].[dbo].[GEID]
    WHERE CONTAINS(CONVERT(nvarchar(max),NUID), 'titre')
您需要创建一个带有
SCHEMABINDING
、带有一些
ID
和连接列的

CREATE VIEW dbo.[view_GEID]  
WITH SCHEMABINDING  
AS  
SELECT  NUID, 
        Col1+Col2+CAST(Col3 as nvarchar(50))... as ConcatColumn
FROM dbo.GEID
然后在该视图上创建索引。然后,您可以使用用于搜索目的

SELECT *
FROM [SQL_BMS].[dbo].[view_GEID]
WHERE CONTAINS(ConcatColumn, 'titre')
另一种方法是连接您需要和使用的所有列,但这可能会导致性能损失

SELECT *
FROM [SQL_BMS].[dbo].[GEID]
WHERE Col1+Col2+CAST(Col3 as nvarchar(50))... LIKE '%titre%'

你想干什么?如果NUID是一个整数,您希望它如何包含字符串“titre”?我之前的评论与此无关。如何在整数列中找到一些文本???@Martin Smith,因为我不会使用唯一的整数,而是使用日期+文本+…@EmmanuelG。CONTAINS与一起使用。全文搜索可用于具有以下数据类型的列:char、varchar、nchar、nvarchar、text、ntext、image、xml或varbinary(max)和FILESTREAM。@gofr1我想对包含多个类型的列进行列连接:date、int、text、varchar,。。。然后在连接中找到一个字符串谢谢,你的是最好的解决方案,所以你是我的答案。很好,它帮助了我!;)
SELECT *
FROM [SQL_BMS].[dbo].[GEID]
WHERE Col1+Col2+CAST(Col3 as nvarchar(50))... LIKE '%titre%'