Wzorzec dopasowania w warunków wyszukiwania
Słowo kluczowe LIKE wyszukuje ciąg znaków, data lub wartości czas, który pasuje do podanego wzorca.Aby uzyskać więcej informacji zobaczData Types (Transact-SQL).LIKE słowa kluczowego używa wyrażenie regularnego zawiera wzorzec wartości są dopasowywane.Deseń zawiera ciąg znaków do wyszukiwania, które mogą zawierać dowolną kombinację cztery symboli wieloznacznych.
Symbol wieloznaczny |
Znaczenie |
---|---|
% |
Dowolny ciąg zawierający zero lub większą liczbę znaków. |
_ |
Dowolny pojedynczy znak. |
[ ] |
Dowolny pojedynczy znak z podanego zakres (na przykład [a-f]) lub zestaw (na przykład [abcdef]). |
[^] |
Dowolny pojedynczy znak nie do określonego zakres (na przykład [^ a - f]) lub (na przykład [^ abcdef]). |
Należy wpisać symbole wieloznaczne i ciąg znaków w pojedyncze cudzysłowy, na przykład:
LIKE "% MC" wyszukuje wszystkie ciągi rozpoczynające się od litery MC (McBadden).
LIKE "% inger" wyszukuje wszystkie ciągi, kończyć inger liter (Ringer, Stringer).
LIKE "% en %" wyszukuje wszystkie ciągi zawierające en litery w dowolnym miejscu ciąg znaków (Bennet, zielony, McBadden).
LIKE '_heryl"wyszukiwane są nazwy wszystkich sześciu literę kończąc heryl liter (Cheryl, Sheryl).
LIKE "[CK] ars [eo] n' przeszukuje Carsen Karsen, Carson i Karson (Carson).
LIKE "[M-Z] inger' powoduje wyszukiwanie wszystkich nazw kończąc inger litery rozpoczynające się z dowolnego pojedynczego list M za pośrednictwem Z (Ringer).
LIKE m [^ c] % ' wyszukuje wszystkie nazwiska rozpoczynające się od litery M, które nie mają literę c jako drugi literę (MacFeather).
Następująca kwerenda powoduje znalezienie wszystkich numerów telefonów w Contact tabela, która ma numer kierunkowy 415:
SELECT Phone
FROM AdventureWorks.Person.Contact
WHERE Phone LIKE '415%'
Można użyć NOT LIKE z tych samych symboli wieloznacznych. Aby znaleźć wszystkie numery telefonów w Contact tabela, które mają inne niż numery kierunkowe 415, użyj jednej z tych odpowiednik kwerendy:
SELECT Phone
FROM AdventureWorks.Person.Contact
WHERE Phone NOT LIKE '415%'
-- Or
SELECT Phone
FROM AdventureWorks.Person.Contact
WHERE NOT Phone LIKE '415%'
The IS NOT NULL klauzula can be used with wildcards and the LIKE klauzula. Na przykład, poniższa kwerenda pobiera numerów telefonów z Contact Tabela, w którym rozpoczyna się numer telefonu 415 i IS NOT NULL:
USE AdventureWorks;
GO
SELECT Phone
FROM Person.Contact
WHERE Phone LIKE '415%' and Phone IS NOT NULL
Important Note: |
---|
Danych wyjściowych dla instrukcji dotyczących LIKE słowa kluczowego zależy od kolejności sortowania, podczas instalacji.Aby uzyskać więcej informacji na temat skutków sortowania różnych zamówień zobacz Praca z ustawień sortowania. |
Tylko warunki WHERE, których można używać na text kolumny są LIKE IS NULL lub PATINDEX.
Bez LIKE symbole wieloznaczne są interpretowane jako stałe, a nie jako wzorzec, jest przedstawiany tylko swoje własne wartości.Następująca kwerenda usiłuje odnaleźć wszystkie numery telefonów, które składają się z czterech znaków 415% tylko. Nie znajdzie numery telefonów, które zaczynają się 415. Aby uzyskać więcej informacji o stałych zobacz Stałe (aparat bazy danych).
SELECT Phone
FROM AdventureWorks.Person.Contact
WHERE Phone = '415%'
Kolejne ważne zagadnienie w przy użyciu symboli wieloznacznych jest ich wpływ na wydajność.Jeżeli symbol wieloznaczny rozpoczyna się wyrażenie, nie może być używany indeks.(Podobnie jak może nie wiedzieć, gdzie rozpocząć w książce telefonicznej, jeśli podany nazwa "% mith', nie 'Smith'.) Symbol wieloznaczny w lub na końcu wyrażenie nie wyklucza używanie indeksu. (Tak jak w książce telefonicznej, czy znasz miejsce wyszukiwania, jeśli nazwa była "Samuel %", niezależnie od tego, czy nazwy Samuels i Samuelson istnieją zarówno.)
Wyszukiwanie znaków wieloznacznych
Można wyszukiwać symboli wieloznacznych.Istnieją dwie metody określania znaków, które zazwyczaj są symbol wieloznaczny:
Aby określić znak anulowania, należy użyć słowa kluczowego ESCAPE.Znak anulowania jest umieszczony z przodu symboli wieloznacznych w strukturze, symbol wieloznaczny jest interpretowana jako znak.Na przykład, aby wyszukać ciąg znaków 5% dowolne miejsce w łańcuchu, należy użyć:
WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
W tym LIKE Klauzula, procent początkowe i końcowe znaki)%), są interpretowane jako symbole wieloznaczne, poprzedzoną znakiem procentu (kreska ułamkowa/) jest interpretowana jako znaku %.
Użyj nawiasów kwadratowych)[ ]) przez siebie, należy ująć symbolu wieloznacznego. Aby wyszukać (łącznik-), zamiast używać go, aby określić zakres wyszukiwania, należy użyć go jako pierwszy znak wewnątrz zestaw nawiasy:
WHERE ColumnA LIKE '9[-]5'
W poniższej tabela pokazano sposób użycia znaków wieloznacznych w nawiasach kwadratowych.
Symbol
Znaczenie
PODOBNIE JAK 5 [%]
5%
% 5 "„
dowolny ciąg znaków, 0 lub więcej znaków, po której następuje 5
LIKE '[_] n'
_n
LIKE "_n"
, w dniu (i itd.)
LIKE "[a-cdf]"
b, c, d lub f
LIKE "[-acdf]"
-, c i d, f
PODOBNIE JAK '['
[
PODOBNIE JAK "]"
]
Podczas porównywania ciągów są wykonywane z tak jak wszystkie znaki w ciąg deseń są znaczące, łącznie z każdym początkowe i końcowe puste (spacja).Jeśli wymagana jest porównania, aby przywrócić wszystkie wiersze, ciąg LIKE "abc" (abc następuje pojedyncza spacja), nie jest zwracana wiersza, w których wartości w tej kolumnie jest abc (abc bez spacji).Odwrotnie, jednak nie jest spełniony.Końcowe spacje w wyrażenie do którego zostanie dopasowany wzorzec są ignorowane.Jeśli wymagana jest porównanie do zwrócenia wszystkich wierszy z ciągiem LIKE "abc" (abc bez spacji), zwracane są wszystkie wiersze, które zaczynają się abc i mieć zero lub więcej spacji końcowych.
See Also