我在我的表中的列其中包含汽車牌照號碼(這是不以任何方式在源數據驗證)。檢查前兩個字符是A-Z字母
對於牌照號碼是有效的,前兩個字符必須是大寫字母(A-Z)。
我試着添加以下WHERE子句:
AND REGEXP_LIKE(SUBSTR(auto.license, 1, 2), '[A-Z]')
...但是我還是在輸出數據集中無效組合。
任何幫助?
我在我的表中的列其中包含汽車牌照號碼(這是不以任何方式在源數據驗證)。檢查前兩個字符是A-Z字母
對於牌照號碼是有效的,前兩個字符必須是大寫字母(A-Z)。
我試着添加以下WHERE子句:
AND REGEXP_LIKE(SUBSTR(auto.license, 1, 2), '[A-Z]')
...但是我還是在輸出數據集中無效組合。
任何幫助?
你的模式
AND REGEXP_LIKE(SUBSTR(auto.license, 1, 2), '[A-Z]')
只檢查是否存在一個A-Z的前兩個字符,而不是兩者都是。
你並不需要額外的子步驟中,你可以這樣做:
AND REGEXP_LIKE(auto.license, '^[A-Z]{2}')
插入符號^
錨字符串的開始,而{2}
先前的模式匹配的兩倍。如果你想匹配的語言(?或字符集)英語以外的大寫字符,其中有大寫不同的範圍,不只是覆蓋ASCII範圍AZ,你可以使用:
AND REGEXP_LIKE(auto.license, '^[[:upper:]]{2}')
Read more about Oracle's regular expression support,和multilingual support。
什麼
AND REGEXP_LIKE(SUBSTR(auto.license, 1, 2), '[A-Z][A-Z]')
我做了一些測試http://rextester.com/AGKQ80549,但這裏的查詢返回'Ab',你知道爲什麼嗎? 「[A-Z] {2}」和「[A-Z] [A-Z]」之間是否有區別? –
看起來正確的答案應該是''^ [[:upper:]] {2}')',怪異的部分是'[a-z]'作爲不區分大小寫的工作。 http://rextester.com/VLULS42459 –
@JuanCarlosOropeza - 我提到使用':upper:'爲其他(不包括英文,我沒有指定!)語言。該網站默認爲德語。請參閱http://rextester.com/IZF22733。 (另外,沒有,'[A-Z] {2}'和'[A-Z] [A-Z]'之間沒有真正的區別,只是避免了重複模式 - 當然, –