Otsida SQL Serveris erimärkidega ridu
Kuigi programmeerimisprobleemide tõrkeotsing on täna, märkasin, et ei saa kasutada LIKE otsimist stringide veergudes, mis sisaldavad erimärke nagu% või _, ilma spetsiaalse süntaksit kasutamata. Probleemi väljaselgitamine võttis vaid paar minutit, kuid süntaksi mäletamine on alati lihtsam kirjutada.
Nii et jah, see postitus on ainult minu kasuks. Loodetavasti aitab see ka keegi teine.
Oletame, et soovite leida väljad, mis sisaldavad teksti "100%", nii et teete selle päringu kokku:
SELECT * FROM tablename WHERE väli nimi LIKE '% 100 %%'
Selle asemel, mida sa tahtsid, saad kõik read, mis sisaldavad “100”, samuti read, mis sisaldavad “100%”.
Probleemiks on selles, et SQL Server kasutab erimärkidena protsenti märki, alakriipsut ja ruuduklambrit. Sa lihtsalt ei saa neid kasutada lihtsa tähemärgina LIKE päringuna ilma neid põgenemata.
Ruudu sulg
Saate ümbritseda% või _ ruudukujuliste sulgudega, et öelda SQL Serverile, et sees olev märk on tavaline.
SELECT * FROM tablename WHERE väli nimi LIKE '% 100 [%]%'
T-SQL ESCAPE süntaks
Alternatiivina võite lisada päringule ESCAPE operaatori ja lisada enne väärtust, mida soovid põgeneda.
SELECT * FROM tablename WHERE väli nimi LIKE '% 100 %%' ESCAPE '\ t
Päringu ESCAPE osa ütleb SQL-mootorile, et see tõlgendaks märgi asemel sõna \ t.
Isiklikult leian, et teine meetod on lihtsam käsitleda ja seda saab kasutada ka ruuduklambrist väljapääsemiseks.