在CONTAINS中使用CAST或CONVERT - SQL Server

时间:2016-10-13 07:14:57

标签: sql sql-server

我尝试在SQL查询中使用CASTCONVERT函数,如下所示:

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

2 个答案:

答案 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')