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

epo*_*ter 3 sql t-sql

假设我有这个SQL查询:

declare @input varchar(20)
select *
from myTable
where CONTAINS (myColumn, ISNULL(@input, 'replacement text'))
Run Code Online (Sandbox Code Playgroud)

如果我尝试执行此操作,则会收到错误消息"ISNULL'附近的语法错误." 我知道这是ISNULL的正确语法.是否有理由不能在CONTAINS语句中调用ISNULL?

KM.*_*KM. 5

试试这个:

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

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

EXEC YourProcedure ISNULL(@input, 'replacement text') --will fail too
Run Code Online (Sandbox Code Playgroud)

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