我的 PostgreSQL 資料庫上有一個文本欄位,我只想在列中存盤大寫字母而不是特殊字符。
我已經使用了CHECK (location_id ~* '[A-Z]')我能夠插入不能解決我的要求的字母和特殊字符。
uj5u.com熱心網友回復:
如手冊中 所述,~*操作員檢查正則運算式“不區分大小寫”。如果您只想允許大寫字母,則需要使用~區分大小寫的運算子。
'[A-Z]'只允許單個字符。如果你想要多個字符,你需要'[A-Z]*'或者'[A-Z] '如果你想要至少一個字符。
這僅匹配字串中某處的大寫字符。為確保所有字符都是大寫,您需要使用和將正則運算式錨定到字串的開頭和^結尾$
CHECK (location_id ~ '^[A-Z] $')
uj5u.com熱心網友回復:
您可以使用
CHECK (location_id ~ '^[A-Z] $')
或者
CHECK (location_id ~ '^[[:upper:]] $')
問題有兩個:
~*以不區分大小寫的方式匹配,因此[A-Z]也匹配小寫字母[A-Z]匹配字串中任意位置的一個大寫 ASCII 字母,因此也允許使用其他字符。^[A-Z] $匹配僅由大寫字母組成的字串。
注意[[:upper:]]也可以用來匹配大寫字母。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/526447.html
