sql >> Databáze >  >> RDS >> Sqlserver

Proč mi použití znaku podtržítka ve filtru LIKE poskytuje všechny výsledky?

Upravte WHERE tento stav:

WHERE mycolumn LIKE '%\_%' ESCAPE '\'

Toto je jeden ze způsobů, jak Oracle podporuje escape znaky. Zde definujete znak escape pomocí escape klíčové slovo. Podrobnosti naleznete na tomto odkazu na Oracle Docs.

'_' a '%' jsou zástupné znaky v LIKE operovaný příkaz v SQL.

_ postava hledá přítomnost (jakéhokoli) jediného znaku. Pokud hledáte podle columnName LIKE '_abc' , poskytne vám výsledek s řádky obsahujícími 'aabc' , 'xabc' , '1abc' , '#abc' ale NE 'abc' , 'abcc' , 'xabcd' a tak dále.

'%' znak se používá pro shodu 0 nebo více znaků. To znamená, že pokud hledáte podle columnName LIKE '%abc' , poskytne vám výsledek s 'abc' , 'aabc' , 'xyzabc' a tak dále, ale žádný 'xyzabcd' , 'xabcdd' a jakýkoli jiný řetězec, který nekončí 'abc' .

Ve vašem případě jste hledali podle '%_%' . Tím získá všechny řádky s tímto sloupcem jeden nebo více znaků, tedy libovolné znaky, jako svou hodnotu. To je důvod, proč získáváte všechny řádky, i když neexistuje žádný _ v hodnotách sloupců.



  1. Nainstalujte klienta Oracle z příkazového řádku bez interakce uživatele

  2. Jak vytvořit řadová čísla v PostgreSQL

  3. Výukový program DBMS:Kompletní rychlokurz o DBMS

  4. Spusťte MySQLDump bez zamykání tabulek