Ca (Transact-sql)

Dacă utilizați operatorul LIKE pentru a compara siruri de caractere sunt luate în considerare toate caracterele, linia de șablon. Acest lucru se aplică la spațiul liber, inițial și la sfârșit ( „“). În cazul în care operațiunea de comparare în interogarea trebuie să returneze toate rândurile care conțin șirul LIKE „abc“ (cu un caracter spațiu la sfârșitul anului), nu vor fi returnate o linie care conține „abc“ (fără spațiu),. Cu toate acestea, spațiile rămase în urmă în expresia, care este comparat cu modelul nu sunt incluse. În cazul în care operațiunea de comparație în interogarea trebuie să returneze toate rândurile care conțin examplu „ABC“ (fără caracter spațiu la sfârșitul anului), se va returna toate rândurile care conțin „abc“, ca la final un spațiu, și fără ele.

Atunci când se utilizează un șablon care conține tipul de date de char sau varchar pentru compararea siruri de caractere cu operatorul LIKE pot avea probleme asociate cu metoda de stocare a datelor. Tu trebuie să cunoască metodele de stocare a fiecărui tip de date, pentru a evita utilizarea necorespunzătoare a operatorului LIKE. În timpul execuției din exemplul următor se transmite procedură stocată variabilă char, și apoi printr-o comparație cu descoperirile structurate toți angajații ale căror nume începe cu secvența de litere.

Procedura de executare FindEmployee nu dă rezultate ca o variabilă de tip char (@EmpLName) are întotdeauna o lungime de 20 de caractere, la care este completat cu un caracter spațiu trailing. Variabilele conținute în coloana LastName. au un tip VARCHAR. Prin urmare, în ele spații libere la dreapta nu sunt anexate. Această procedură eșuează, deoarece spațiile libere rămase în urmă sunt ignorate.

Procedura din exemplul următor reușește, deoarece spațiile rămase în urmă față de tipul varchar variabilă nu este adăugat.

Coincidența cu modelul folosind ofertele ESCAPE

Puteți căuta șiruri de caractere, care includ unul sau mai multe dintre caracterele speciale wildcard. De exemplu, tabelul de reduceri de bază de date ale clienților pot cuprinde o reducere de valoare, inclusiv semnul de procent (%). Pentru a căuta semnul la sută ca un personaj obișnuit, trebuie să introduceți un cuvânt cheie și de a scăpa de caractere de evacuare. De exemplu, o bază de date eșantion cuprinde o coloană numită comentariu, care stochează o valoare de „30%“. Pentru a găsi rândurile care conțin o secvență de „30%“ simboluri într-un comentariu coloană, trebuie să specificați o clauză WHERE, cum ar fi atunci când comentariul LIKE „% 30! %%“ ESCAPE „!“. În cazul în care clauza ESCAPE și de evacuare, caracterul nu este specificat, componenta bazei de date a motorului revine toate rândurile care conțin secvența de caractere „30“.

Dacă modelul LIKE după caracterul de evacuare este nici un simbol, șablonul nu este valabil, iar operatorul LIKE returnează FALSE. În cazul în care caracterul după caracterul de evacuare nu este un caracter wildcard, caracterul de evacuare este ignorat, iar acest caracter este tratat ca un personaj obișnuit în model. Acest lucru se aplică astfel de wildcard ca subliniere (_), procente (%), iar suportul de stânga ([), în cazul în care acestea sunt închise în paranteze pătrate. De asemenea, în paranteze pătrate ([]) și folosind caracterele de evacuare pot folosi simboluri cum ar fi caret (^), o cratimă (-) și consola dreapta (]).

0x0000 (char (0)) este un caracter nedefinit în colationarile Windows și nu pot fi incluse în clauza LIKE.

A. Folosirea operatorului LIKE cu un caracter wildcard%

Ceea ce urmează este rezultatul stabilit.

telefon FirstName NumeDeFamilie

Ruben Alonso 415-555-0124

Shelby Cook, 415-555-0121

Karen Hu 415-555-0114

John Long 415-555-0147

David Long 415-555-0123

Gilbert Ma 415-555-0138

Meredith Moreno 415-555-0131

Alexandra Nelson 415-555-0174

Taylor Patterson 415-555-0170

Gabrielle Russell 415-555-0197

Dalton Simmons 415-555-0115

(11 rând (uri) afectate)

B. NU Aplicație LIKE operator cu un caracter wildcard%

Ceea ce urmează este rezultatul stabilit.

FirstName NumeDeFamilie Telefon

Gail Alexander 1 (11) 500 555-0120

Gail Butler 1 (11) 500 555-0191

Gail Erickson 834-555-0132

Gail Erickson 849-555-0139

Gail Griffin 450-555-0171

Gail Moore 155-555-0169

Gail Russell 334-555-0170

Gail Westover 305-555-0100

(8 rând (uri) afectate)

B. Aplicație oferă ESCAPE

În exemplul următor, ESCAPE și de evacuare caracter este utilizat pentru a căuta un șir de caractere de 10-15% în coloana tabel c1 mytbl2.