检查字符串的前两个字符是A-Z字母

时间:2016-10-30 18:32:22

标签: regex oracle

我的表格中有一列包含汽车牌照号码(未在源数据中以任何方式验证)。

要使许可证编号有效,前两个字符必须是大写字母(A-Z)。

我尝试将以下内容添加到WHERE子句中:

AND REGEXP_LIKE(SUBSTR(auto.license, 1, 2), '[A-Z]')

...但我仍然在输出数据集中得到无效组合。

任何帮助?

2 个答案:

答案 0 :(得分:3)

你的模式

AND REGEXP_LIKE(SUBSTR(auto.license, 1, 2), '[A-Z]')

仅检查前两个字符中是否有一个A-Z,而不是两者都是。

您不需要额外的子字符串步骤,您可以这样做:

AND REGEXP_LIKE(auto.license, '^[A-Z]{2}')

插入符^锚定到字符串的开头,{2}与前一个模式匹配两次。如果你想匹配除英语以外的语言(或字符集?)中的大写字符,它们具有不同的大写范围,并且不包括ASCII范围A-Z,你可以使用:

AND REGEXP_LIKE(auto.license, '^[[:upper:]]{2}')

Read more about Oracle's regular expression supportmultilingual support

答案 1 :(得分:2)

怎么样?
AND REGEXP_LIKE(SUBSTR(auto.license, 1, 2), '[A-Z][A-Z]')