If-Koubou

Căutați rânduri cu caractere speciale în SQL Server

Căutați rânduri cu caractere speciale în SQL Server (Cum să)

În timp ce depanarea unei probleme de programare astăzi am observat că nu puteți utiliza o căutare LIKE pentru coloane de șir care conțin caractere speciale ca% sau _ fără a utiliza o sintaxă specială. Stabilirea problemei a durat doar câteva minute, dar amintirea sintaxei este întotdeauna mai ușoară dacă scrieți despre ea.

Deci da, acest post este numai în beneficiul meu. Sperăm că va ajuta și pe altcineva.

Să presupunem că doriți să găsiți orice câmp care conține textul "100%", pentru a pune împreună această interogare:

SELECT * FROM numele tabelului WHERE nume de domeniu LIKE '% 100 %%'

În loc de ceea ce ați dorit, veți obține toate rândurile care conțin "100", precum și rândurile care conțin "100%".

Problema aici este că SQL Server utilizează semnele de procent, sublinierea și parantezele pătrate ca caractere speciale. Pur și simplu nu le puteți folosi ca un caracter simplu într-o interogare LIKE fără a le scăpa.

Strângere de console

Puteți să înconjurați% sau _ cu paranteze pătrate pentru a le spune SQL Server că caracterul din interior este un caracter obișnuit.

SELECT * FROM numele tabelului WHERE nume de domeniu LIKE '% 100 [%]%'

Sintaxa T-SQL ESCAPE

Alternativ, puteți adăuga operatorul ESCAPE în interogarea dvs. și adăugați un caracter înainte de valoarea pe care doriți să o scapați.

SELECT * FROM numele tabelului WHERE nume de domeniu LIKE '% 100 \ %%' ESCAPE '\'

Partea ESCAPE "a" interogării spune motorului SQL să interpreteze caracterul după caracterul literal ca și literal, în loc ca pe un wildcard.

Personal, găsesc cea de-a doua metodă mai ușor de rezolvat și o puteți utiliza și pentru a scăpa de o coadă pătrată.