我的表格中有一列包含汽车牌照号码(未在源数据中以任何方式验证)。
要使许可证编号有效,前两个字符必须是大写字母(A-Z)。
我尝试将以下内容添加到WHERE子句中:
AND REGEXP_LIKE(SUBSTR(auto.license, 1, 2), '[A-Z]')
...但我仍然在输出数据集中得到无效组合。
任何帮助?
答案 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 support和multilingual support。
答案 1 :(得分:2)
怎么样?
AND REGEXP_LIKE(SUBSTR(auto.license, 1, 2), '[A-Z][A-Z]')