我尝试在SQL查询中使用CAST
或CONVERT
函数,如下所示:
SELECT *
FROM [SQL_BMS].[dbo].[GEID]
WHERE CONTAINS(CONVERT(nvarchar(max), NUID), 'titre')
或
SELECT *
FROM [SQL_BMS].[dbo].[GEID]
WHERE CONTAINS(CAST(NUID as nvarchar(max)), 'titre')
但我收到了错误:
关键字' CONVERT'
附近的语法不正确
或
关键字'附近的语法错误为'
那么如何将NUID
列从Int
投射到nvarchar
?
答案 0 :(得分:2)
您需要使用SCHEMABINDING
创建view,并使用一些ID
和连锁列。
CREATE VIEW dbo.[view_GEID]
WITH SCHEMABINDING
AS
SELECT NUID,
Col1+Col2+CAST(Col3 as nvarchar(50))... as ConcatColumn
FROM dbo.GEID
然后在该视图上创建full-text索引。然后,您可以使用CONTAINS进行搜索。
SELECT *
FROM [SQL_BMS].[dbo].[view_GEID]
WHERE CONTAINS(ConcatColumn, 'titre')
另一种方法是连接所需的所有列并使用LIKE,但这可能会导致性能下降。
SELECT *
FROM [SQL_BMS].[dbo].[GEID]
WHERE Col1+Col2+CAST(Col3 as nvarchar(50))... LIKE '%titre%'
答案 1 :(得分:-1)
试试这个:
SELECT *
FROM [SQL_BMS].[dbo].[GEID]
WHERE CONTAINS(CONVERT(nvarchar(max),NUID), 'titre')