小编典典

SQL Server T-SQL中的REGEXP_LIKE转换

sql

我在需要转换为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是一个字段,我无法指定模式吗?

我最初没有写此报告,所以我还是对它正在寻找的模式感到困惑。

非常感谢


阅读 327

收藏
2021-04-22

共1个答案

小编典典

WHERE PATINDEX ('%pattern%',expression)  !=0

如果找到了pattern,那么PATINDEX返回非零值,您需要在WHERE子句中进行比较。一个WHERE子句必须跟比较的操作,返回真/假。

可能是您在不进行比较的情况下使用了PATINDEX,这就是为什么错误消息在WHERE子句附近显示非布尔表达式。

用通配符搜索模式 学习者代码

WHERE PATINDEX ('%' + CAST(learner_code AS VARCHAR) +'%',examCodes)  !=0
2021-04-22