sql >> Databáze >  >> RDS >> PostgreSQL

Proč to funguje jinak s ~~ any()?

Problém je v tom, že výsledek vašeho poddotazu je interpretován jako řetězec, nikoli jako pole. Je to proto, že tyto dvě formy jsou sémanticky odlišné:

~~ ANY ('...')  -- will be interpreted as an array literal

a

~~ ANY (SELECT ...)  -- will compare with all query results in turn

Takže můžete jednoduše napsat:

WHERE lower(name) ~~ ANY
      (SELECT DISTINCT '%' || lower(brand) || '%'
       FROM my_table
       WHERE source = 'Orig')



  1. Jediné potvrzení při importu velmi velkých souborů SQL (MySQL)

  2. Vložení řádku a vyhnutí se sporu (PHP/MySQL)

  3. Dynamicky vyplňte více vstupních polí z MySQL v závislosti na vybrané položce rozevíracího seznamu

  4. Chyba MySql:Nelze aktualizovat tabulku v uložené funkci/spouštěči