Problema:SQL: Alimentazione Output Select a come
select STR1 from T1 where STR2 = 'NAME1'
Nella sopra STR1 query può essere in forma {ABC, ABC_1, ABC_2, ..., MNO, XYZ, XYZ_1 ...}.
Quindi suppongo che ho seguente output
ABC_1
MNO
XYZ
Ora voglio estrarre tutti quelli corrispondenti STR1 che includono la parte prima _ #. Per esempio i risultati attesi per l'esempio set di dati di cui sopra è:
ABC
ABC_1
ABC_2
MNO
XYZ
XYZ_1
Nota che STR2 è sempre unico per ogni STR1.
Codice saggio immagino qualche cosa come segue:
SELECT
STR1
FROM
T1
WHERE
STR1
LIKE '% (truncate_underscore_part(select STR1 from T1 where STR2 = 'NAME1')) %'
Qualche idea?
Prima soluzione:
select t1.str1
from (
select case when instr(str1, '_') > 0
then substr(str1, 1, instr(str1, '_') - 1)
else str1
end prefix
from t1 where str2 = 'NAME1'
) prefix_list,
t1
where t1.str1 like prefix || '%'
Si sta utilizzando Oracle o MySQL? –
L'esempio dell'output della prima query mostra solo gli elementi senza sottolineatura, ma dalla tua descrizione ho compreso che il primo elenco potrebbe includere "ABC_1", ecc., E si desidera rimuovere la porzione _ # di la stringa prima di procedere con la corrispondenza? –
Perché questo è etichettato come Oracle e MySQL ??? – MatBailie