想象一下以下数据:
Peter Santos (SA)
John Doe - SA
Maria Santos
我想匹配包含字母SA的字符串,但如果它们在一个单词中,则不匹配。
换句话说,在评估“Peter Sa ntos( SA )”时,它应该在“ Sa ntos”上失败,因为它已成功通过其他字母,但成功( SA ),因为在它之前或之后没有字母。
“John Doe - SA ”应与那里唯一的SA条目相匹配......
“Maria Sa ntos”不应该返回,因为它已被其他角色取代。
如何在不使用正则表达式的情况下使用MS SQL实现这一目标?
答案 0 :(得分:1)
我相信这个查询逻辑可以在不使用RegEx的情况下为您提供所需的内容:
SELECT String_To_Search<br/>
FROM ...<br/>
WHERE <br/>
String_To_Search LIKE 'SA[^A-Za-z]%'<br/>
OR String_To_Search LIKE '%[^A-Za-z]SA'<br/>
OR String_To_Search LIKE '%[^A-Za-z]SA[^A-Za-z]%'<br/>
WHERE子句中的三个谓词允许'SA'出现在字符串的开头,中间或结尾,始终既不在任何字母之前也不在其后面。