我在需要转换为SQL Server的旧报表中遇到了这一行。
REGEXP_LIKE (examCodes, learner_code)
ExamCodes是源代码,而learninger_code是模式。我知道SQL Server没有REGEXP_LIKE,大多数地方都告诉您使用PATINDEX。
我在想这会起作用:
PATINDEX(learner_code, examCodes)
但是我得到了错误:
Msg 4145, Level 15, State 1, Line 54 An expression of non-boolean type specified in a context where a condition is expected, near 'WHERE'.
在MSDN上,语法指定为
PATINDEX ('%pattern%',expression)
但是learninger_code是一个字段,我无法指定模式吗?
我最初没有写此报告,所以我还是对它正在寻找的模式感到困惑。
非常感谢
WHERE PATINDEX ('%pattern%',expression) !=0
如果找到了pattern,那么PATINDEX返回非零值,您需要在WHERE子句中进行比较。一个WHERE子句必须跟比较的操作,返回真/假。
WHERE
可能是您在不进行比较的情况下使用了PATINDEX,这就是为什么错误消息在WHERE子句附近显示非布尔表达式。
用通配符搜索模式 学习者代码
WHERE PATINDEX ('%' + CAST(learner_code AS VARCHAR) +'%',examCodes) !=0