2016-05-03 3 views
0

Ich habe eine Spalte mit dem Typ CLOB und enthält durch Kommas getrennte Werte wie '1,2,13,14' und ich muss überprüfen, ob der Wert in einer anderen Spalte (Zeichenfolge) mit einem der durch Komma getrennten Werte im CLOB übereinstimmen kann . Wie mache ich das?Oracle SQL - Wie finde ich eine Übereinstimmung in einer Spalte mit kommagetrennten Werten?

z. finden, wenn 3 in ‚1,2,13,14‘

Ich versuchte InStr und REGEXP_INSTR, werden sie beide eine Übereinstimmung finden, wenn sie versuchen zu sehen, ob 3 in ‚1,2,13,14‘ ist

Bitte helfen Sie !!

Antwort

2

Sie können dies tun, indem Sie ein Komma zu Beginn und am Ende des Strings Hinzufügen Sie überprüfen und vergleichen es dann zu ,3, wie so:

with sample_data as (select '1,2,13,14' str from dual union all 
        select '11,22,3' str from dual union all 
        select '3,44,5' str from dual union all 
        select '19,3,394,49' str from dual union all 
        select '33,20' str from dual union all 
        select '3' str from dual union all 
        select '33,303' str from dual) 
select str, 
     instr(','||str||',', ',3,') instr_3, 
     case when ','||str||',' like '%,3,%' then 'Y' 
      else 'N' 
     end is_3_present 
from sample_data; 

STR   INSTR_3 IS_3_PRESENT 
----------- ---------- ------------ 
1,2,13,14   0 N   
11,22,3    7 Y   
3,44,5    1 Y   
19,3,394,49   4 Y   
33,20    0 N   
3     1 Y   
33,303    0 N   

ich Ihnen ein paar verschiedenen gegeben habe Möglichkeiten der Überprüfung.

Verwandte Themen