簡體   English   中英

從Oracle數據庫中的逗號分隔值中獲取特定值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM