Condividi
Ricerca di substring da una subquery in PostgreSQL
Ho un database POstgreSQL nel quale ho definito una tabella e voglio trovare una stringa in una riga, (tipo di dati 'character varying') ovvero una substring, all'interno della tabella usando la sottostringa (tipo di dati 'character varying') restituita dalla sottoquery (subquery):
SELECT MyTable.myColumn
FROM MyTable
WHERE myColumn LIKE (
SELECT str
FROM test
WHERE str IS NOT NULL)
ma lanciando questa query select ottengo il seguente errore:
ERROR: more than one row returned by a subquery used as an expression
Come posso trovare la substring (sottostringa) usando i risultati della subquery (sottoquery)?
In Corso
3
PostgreSQL
17-10-2019
3 Risposte
3185 Visite
+3
Risposte ( 3 approvate )
Usa
like any
come operatore anzichèlike
, in questo modo:o prova anche così:
sfruttando il wildcard % (stringa composta da zero o più caratteri) con l'operatore logico or ||. Spero possa esserti d'aiuto.
Prendendo spunto dall'esempio postato da Caterina Stoletti, per trovare la substring da una riga ritornata da una subquery ti suggeriso anche io di fare in questo modo:
Sembrerebbe molto probabile che ci sia più di una str nel test in cui str NON È NULL. Ecco perché viene restituita più di una riga dalla sottoquery utilizzata come espressione ecco perché PostgreSQL restituisce esito negativo da quella istruzione.
Esegui la subquery autonoma (come se fosse una query singola di primo livello) per vedere cosa ritorna. Forse intendevi che fosse una sottoquery correlata ma hai dimenticato il riferimento alla colonna esterna? O forse c'è una colonna chiamata anche str nella tabella esterna e intendevi scrivere: