一尘不染

为什么不能在CONTAINS语句中调用ISNULL?

sql

假设我有这个SQL查询:

declare @input varchar(20)
select *
from myTable
where CONTAINS (myColumn, ISNULL(@input, 'replacement text'))

如果我尝试执行此操作,则会收到一条错误消息,提示“
ISNULL附近的语法不正确”。我知道这是ISNULL的正确语法。为什么不能在CONTAINS语句内部调用ISNULL?


阅读 169

收藏
2021-03-08

共1个答案

一尘不染

试试这个:

declare @input varchar(20)
SET @input=ISNULL(@input, 'replacement text')
select *
from myTable
where CONTAINS (myColumn, @input)

当您尝试将表达式放入存储过程调用时,这是相同的问题:

EXEC YourProcedure ISNULL(@input, 'replacement text') --will fail too

CONTAIN需要字符串文字,请参见CONTAINS(Transact-SQL)

2021-03-08