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

Escapování speciálních znaků v příkazu SQL LIKE pomocí parametrů SQL

Máte dvě možnosti:

  • uzavřete je do [ a ] . Takže:

    where pattern like '[%]'
    

    Hledá znak v procentech. Úplný seznam znaků, které mají být escapovány - '_', '%', '[', ']' s odpovídajícími náhradami '[_]', '[%]', '[[]', '[]]' . Ukázkový kód lze nalézt v Escapování znaku escape nefunguje – operátor SQL LIKE

  • použijte únikový znak, který pravděpodobně nebude v řetězci, jako je backtick:

    where pattern like '`%' escape '`'
    

    (Viz syntaxi na MSDN – LIKE (Transact-SQL) .)

V obou případech bych navrhoval, abyste provedli substituci v aplikační vrstvě, ale můžete to udělat také v SQL, pokud opravdu chcete:

where pattern like replace(@pattern, '%', '[%]')

A poskytnout koncovému uživateli přístup k zástupným znakům může být dobrá věc z hlediska uživatelského rozhraní.

Poznámka:Existuje několik dalších speciálních znaků '-' a '^' v dotazu LIKE, ale není nutné je escapovat, pokud již escapujete '[' a ']' .



  1. Náhodná ID ve sqlalchemy (pylony)

  2. mysql, bigint nebo dekadické pro ukládání> 32 bitových hodnot, ale méně než 64 bitů

  3. Obnovení smazaného 'root' uživatele a hesla pro MySQL

  4. Jak mohu vytvořit funkci, která vrátí názvy sloupců omezení?