SQL Regex查找不以特定单词开头的字符串

时间:2016-10-05 09:53:04

标签: sql-server regex

我正在寻找MSSQL中的正则表达式来省略特定单词“开始”的值。例如,表达式应该忽略以'Mr'开头的任何字符串,但是拉出任何以'MMR'开头的字符串或'Mr'在字符串中间的某处:

示例数据:

  

应该省略:'先生墨菲巴雷拉7329 Neque Road Zierikzee M15 6SF汤加'

     

不应该被省略:'Murphy Barrera 7329 Neque Road Zierikzee M15 6SF 先生汤加'

我使用了LIKE '[^Mr.]',但是省略了以M OR R开头的所有内容,所以它没有做到这一点。

我有一个需要检查的单词列表(例如,Ms,Dr,St等),所以我请求你让我知道如何调整正则表达式。

提前致谢!

2 个答案:

答案 0 :(得分:2)

为什么不使用

string not like 'mr%'

它将忽略查询,从先生开始。

答案 1 :(得分:1)

(string like 'mmr%' or string like '%mr%') and string not like 'mr%'

Query using total wild cards can also use statistics,也有很好的估计,只有

1.如果字符串的总长度小于80个字符

如果字符串长于80个字符,那么

  

从字符串中提取第一个和最后40个字符,并在创建字符串摘要之前考虑字符串之前连接。因此,对于仅出现在字符串的忽略部分中的子串的准确频率估计是不可用的

     

我有一个需要检查的单词列表(例如,Ms,Dr,St等),所以我请求你告诉我如何调整正则表达式

我建议使用全文搜索。要知道为什么会在下面阅读

Performance of like '%Query%' vs full text search CONTAINS query