[英]Get specific value from a comma separated values in Oracle database
我有一個名為DUMMY_TAB
的表,該表的列COLOR
包含逗號分隔的值,如RED,BLUE,WHITE,GREEN,YELLOW
。 現在,我想檢查是否存在多種顏色,並且我不知道存儲值的順序。
我已經使用過類似的查詢:
SELECT COLOR from DUMMY_TAB WHERE (COLOR LIKE '%GREEN%' OR COLOR LIKE '%VOILET%' OR COLOR LIKE '%ORANGE%');
但查詢未返回任何內容。 我可以在這里得到任何幫助嗎?
您應該使用聯結表。 SQL具有用於存儲列表的強大數據結構。 它稱為桌子 。 逗號分隔值不是正確的方法。
但是,有時候,您別無選擇。 您正在尋找:
where ',' || 'GREEN' || ',' like ',' || COLOR || ','
使用定界符可確保您可以在列表的開頭和結尾找到該值。
正如Justin Cave所強調的,您肯定違反了規范化。
最佳實踐也是將它們存儲在表的列中,而不是全部存儲在一個表中。
我無法復制您的問題陳述。 在這里查看證明
create table temp (col varchar2(30));
insert into temp values('RED,BLUE,WHITE,GREEN,YELLOW');
SELECT * from temp WHERE col LIKE '%GREEN%';
COL
RED,BLUE,WHITE,GREEN,YELLOW
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.