我需要輸出不以元音開頭和結尾的名稱。我試過這樣:SQL中的NOT LIKE IN語句
SELECT DISTINCT name FROM people WHERE
lower(name) NOT LIKE IN ('a','e','i','o','u')%('a','e','i','o','u');
我得到了錯誤。
我需要輸出不以元音開頭和結尾的名稱。我試過這樣:SQL中的NOT LIKE IN語句
SELECT DISTINCT name FROM people WHERE
lower(name) NOT LIKE IN ('a','e','i','o','u')%('a','e','i','o','u');
我得到了錯誤。
您可以使用regexp_like
與之相匹配的參數i
不區分大小寫的匹配:
select distinct name from people
where not regexp_like(name, '^[aeiou]($|.*[aeiou]$)', 'i');
模式的細節:
^[aeiou]
- 開始以元音($|.*[aeiou]$)
- 無論是隻有一個字符(在第一步中匹配)或以元音結尾。您可能想要嘗試避免使用REGEXP
在大數據集情況下的性能原因。
在這種情況下是TRANSLATE
你的朋友。
1)所有的元音轉換成一個代表
2)與所選擇的元音
select txt from tab1
where translate(lower(txt),'aeiou','aaaaa') not like 'a%a';
REGEXP s爲強大的執行正常LIKE謂詞,但不應在非平凡的數據使用的以防萬一他們可以避免。 (我的8M行測試數據給出了使用TRANSLATE
所花費的7秒與使用REGEXP
的2分鐘所花費的時間)。
看看http://stackoverflow.com/questions/3014940/is-there-a-combination-of-like-and-in-in-sql – CollinD