Pagina principala » HOWTO » Căutați rânduri cu caractere speciale în SQL Server

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

    Î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âmpuri care conțin textul "100%", astfel că ați pus î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 procentuale, subliniază ș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.

    Suportul de pe braț

    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 nume de tabelă 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 scăpați.

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

    Partea "ESCAPE" a interogării indică motorului SQL să interpreteze caracterul după caracterul literal ca și literal, în loc de a fi folosit ca martor.

    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ă.