我正在尝试搜索包含字母数字ID的列,但是想要编写一个返回包含字母和数字而不是一个或另一个的记录的查询。
i.e Acceptable: jjk44kndkfndFF
i.e Not acceptable: 223232323232 or aajnfdskDFdd
到目前为止,我有:
where PATINDEX('%[^a-zA-Z0-9 ]%',columnInQuestion)
返回所有字母数字记录。任何方向赞赏
答案 0 :(得分:2)
我认为在WHERE
子句中需要三个谓词:
WHERE (columnInQuestion NOT LIKE '%[^a-zA-Z0-9]%') AND
(PATINDEX('%[a-zA-Z]%', columnInQuestion) <> 0) AND
(PATINDEX('%[0-9]%', columnInQuestion) <> 0)
(columnInQuestion NOT LIKE '%[^a-zA-Z0-9]%')
仅包含 字母数字字符,则第一个谓词columnInQuestion
为真(PATINDEX('%[a-zA-Z]%', columnInQuestion) <> 0)
columnInQuestion
为真
(PATINDEX('%[0-9]%', columnInQuestion) <> 0)
columnInQuestion
为真
答案 1 :(得分:0)
只需一个正则表达式就可以完成:
^[a-zA-Z0-9]*([a-zA-Z][0-9]|[0-9][a-zA-Z])[a-zA-Z0-9]*$
以0-x法定字符开头和结尾。
在某处,有一个从字母到数字或从数字到字母的切换。