在CONTAINS-sqlserver中使用CAST或CONVERT
我试图在SQL查询中使用在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].
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%'