If-Koubou

Meklēt rindās ar īpašām rakstzīmēm SQL Server

Meklēt rindās ar īpašām rakstzīmēm SQL Server (Kā)

Plānošanas problēmu traucējumiem šodien es pamanīju, ka jūs nevarat izmantot LIKE meklēšanu virknes slejās, kurās ir speciālās rakstzīmes, piemēram,% vai _, neizmantojot īpašu sintaksi. Izprotot problēmu, notika tikai dažas minūtes, taču sintakses atgādināšana vienmēr ir vieglāka, ja par to rakstāt.

Tātad, jā, šis ziņojums ir tikai mana labā. Cerams, ka tas palīdzēs arī kādam citam.

Pieņemsim, ka vēlaties atrast visus laukus, kuros ir teksts "100%", tāpēc jūs varat apkopot šo vaicājumu:

SELECT * no tablename WHERE lauka nosaukums LIKE '% 100 %%'

Tā vietā, ko vēlaties, jūs saņemsit visas rindas, kurās ir "100", kā arī rindas, kurās ir "100%".

Problēma ir tāda, ka SQL Server izmanto kā procentu rakstzīmi, pasvītrojumu un kvadrātiekavas kā īpašas rakstzīmes. Jūs vienkārši nevarat tos izmantot kā vienkāršu rakstzīmi LIKE vaicājumā, neizlaižot tos.

Kvadrātveida kronšteins izbēgt

Jūs varat apiet% vai _ ar kvadrātiekavās, lai pateiktu SQL Server, ka rakstzīme iekšā ir regulāra rakstzīme.

SELECT * no tablename WHERE lauka nosaukums LIKE '% 100 [%]%'

T-SQL ESCAPE sintakse

Alternatīvi, jūs varat pievienot ESCAPE operatoru uz jūsu vaicājumu un pievienot \ rakstzīmi pirms vērtības, kuru vēlaties izvairīties.

SELECT * no tablename WHERE lauka nosaukums LIKE '% 100 \ %%' ESCAPE '\'

Vaicājuma daļa ESCAPE '\' norāda SQL dzinējam interpretēt rakstzīmi pēc \ kā burtiskā simbola, nevis kā aizstājējzīmi.

Personīgi es uzskatu, ka otrā metode ir vieglāk tikt galā, un jūs varat to izmantot arī, lai izvairītos no kvadrātiekavas.