SQL Server T-SQL中的REGEXP_LIKE转换



我在一个需要转换为SQL Server的旧报告中看到了这一行。

REGEXP_LIKE (examCodes, learner_code)

examCodes是源,learner_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) 

但是learner_code是一个字段,我不能指定模式?

我一开始并没有写这份报告,所以我对它所寻找的模式感到困惑。

非常感谢

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

若找到了模式,PATINDEX将返回非零值,并且需要在WHERE子句中进行比较。WHERE子句后面必须跟有返回true/false的比较运算

可能是您在使用PATINDEX时没有进行比较,这就是错误消息在WHERE子句附近显示非布尔表达式的原因。

使用通配符搜索模式learner_code

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

ORACLE的REGEXP_LIKE支持实际的正则表达式,PATINDEX只支持%和_通配符、[]列表/范围和^列表/范围否定。

相关内容

  • 没有找到相关文章

最新更新