SQL选择字符串不会立即在其他字母之前,也不在其他字母之后

时间:2015-10-27 16:17:42

标签: sql-server

想象一下以下数据:

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实现这一目标?

1 个答案:

答案 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'出现在字符串的开头,中间或结尾,始终既不在任何字母之前也不在其后面。