是否可以在 Postgresql 中僅使用LIKE或ILIKE關鍵字查詢不以元音(或一組給定字符)開頭的字串?
例如,我正在使用這個示例資料庫,并試圖從不以元音開頭Customer的first_names 中提取:
SELECT first_name
FROM Customer
WHERE first_name NOT ILIKE '[aeiou]%'
ORDER BY first_name;
然而,這查詢不作業,我得到的結果一樣Aaron,Adam等等的問題是在方括號,因為條件NOT ILIKE 'a%'的作品。
我知道以前有類似問題的答案,但 1)它們不在 postgresql 中,2)它們使用正則運算式或子串,而我想知道是否存在使用LIKE/的解決方案ILIKE
uj5u.com熱心網友回復:
AFAIK,LIKE/ILIKE不支持正則運算式語法,這是您在提供的示例中嘗試使用的。LIKE/ILIKE僅支持%和_特殊符號,而那些不能在單個運算式中執行您需要的操作。
你可能會逃脫類似的事情
SELECT first_name
FROM Customer
WHERE first_name NOT ILIKE 'a%' AND first_name NOT ILIKE 'e%' AND first_name NOT ILIKE 'i%' AND first_name NOT ILIKE 'o%' AND first_name NOT ILIKE 'u%'
ORDER BY first_name;
...但這樣做需要一個很好的理由,而不是使用正則運算式。
uj5u.com熱心網友回復:
此外,您可以使用 ^ 符號(單詞(字串)的開頭)
SELECT first_name
FROM Customer
WHERE not first_name ~* '^[aeiou]'
ORDER BY first_name;
uj5u.com熱心網友回復:
LIKE(它是 Postgres 擴展ILIKE)不支持 SQL 中的正則運算式。
如果要使用正則運算式,可以使用符合標準的similar to或 Postgres 特定的~*運算子
SELECT first_name
FROM Customer
WHERE not first_name ~* '^[aeiou]*'
ORDER BY first_name;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324280.html
標籤:PostgreSQL
