sql >> Databasteknik >  >> RDS >> Sqlserver

Escape specialtecken i en SQL LIKE-sats med sql-parametrar

Du har två alternativ:

  • bifoga dem i [ och ] . Så:

    where pattern like '[%]'
    

    Letar efter procenttecknet. Fullständig lista över tecken som ska escape - '_', '%', '[', ']' med motsvarande ersättningar '[_]', '[%]', '[[]', '[]]' . Exempelkod finns i Escape av escape-tecknet fungerar inte – SQL LIKE Operator

  • använd ett escape-tecken som sannolikt inte finns i strängen, till exempel en backtick:

    where pattern like '`%' escape '`'
    

    (Se syntaxen på MSDN - LIKE (Transact-SQL) .)

I båda fallen skulle jag föreslå att du gör ersättningen i applikationslagret, men du kan också göra det i SQL om du verkligen vill:

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

Och att ge slutanvändaren tillgång till jokertecken kan vara bra när det gäller användargränssnittet.

Obs:det finns ytterligare ett par specialtecken '-' och '^' i LIKE-frågan, men de behöver inte escapes om du redan escaper '[' och ']' .



  1. slqlalchemy UniqueConstraint VS Index(unique=True)

  2. många-till-många-relation mellan två enheter i spring boot

  3. MySQL:VÄLJ ut en vinnare och ger tillbaka deras ranking

  4. Hur ordnar man om objekt i listan i enlighet med ett givet mönster?