【问题标题】:MySQL REGEXP to SQL ServerMySQL REGEXP 到 SQL Server
【发布时间】:2011-05-05 14:08:03
【问题描述】:

下面的 MySQL 表达式的 SQL Server 等效项是什么?

... WHERE somefield REGEXP '^[[:blank:]]*ASD[[:blank:]]*$|^[[:blank:]]*ASD[[:blank:]]*[[.vertical-line.]]|[[.vertical-line.]][[:blank:]]*ASD[[:blank:]]*$|[[.vertical-line.]][[:blank:]]*ASD[[:blank:]]*[[.vertical-line.]]'

【问题讨论】:

标签: sql mysql sql-server regex


【解决方案1】:

不幸的是,mssql 中的正则表达式支持很糟糕,最接近的运算符是“like”,它错过了正则表达式的功能一英里。您将不得不考虑将正则表达式分解为多个类似的语句,并可能进行一些肮脏的字符串操作来模拟您试图实现的目标。

例如,虽然我们可以使用 [ ](读取 [ Space Tab ])复制 [[:blank:]],但我们不能强制匹配其中的零个或多个,因此我们必须将它们从表达式中删除,但是这个将匹配“ ASD ”,因此我们需要测试未修改的字符串中是否存在 ASD。

我认为以下内容会替换您的正则表达式,但它很快就被拼凑在一起,因此请仔细测试。

replace(replace(somefield,' ',''),' ','') in ('ASD','|ASD','|ASD|','ASD|')
and
somefield like '%ASD%'

在我的替换语句中,一个是空格,另一个是制表符。

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 2010-09-06
    • 2017-03-14
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2017-01-29
    相关资源
    最近更新 更多