Dopasowanie do wzorca w warunkach wyszukiwania
Słowo kluczowe LIKE wyszukuje ciąg znaków, data lub czas wartości, które pasuje do podanego wzorca.Aby uzyskać więcej informacji, zobacz Typy danych (Transact-SQL).Słowo kluczowe LIKE używa wyrażenie regularne zawiera wzorzec wartości są dopasowywane.Deseń zawiera ciąg znaków do wyszukiwania, który może zawierać dowolną kombinację czterech symboli wieloznacznych.
Symbol wieloznaczny |
Znaczenie |
|---|---|
% |
Dowolny ciąg zawierający zero lub większą liczbę znaków. |
_ |
Dowolny pojedynczy znak. |
[ ] |
Dowolny pojedynczy znak z zakres (na przykład [a-f]) lub zestaw (na przykład [abcdef]). |
[^] |
Dowolny znak nie do określonego zakres (na przykład [^ a - f]) lub zestaw (na przykład [^ abcdef]). |
Należy ująć symboli wieloznacznych i ciąg znaków w pojedynczy cudzysłów, na przykład:
Podobnie jak Mc %. wyszukuje wszystkie ciągi rozpoczynające się od litery Mc (McBadden).
Podobnie jak "% inger" wyszukuje wszystkie ciągi, które kończą się inger liter (Ringer, podłużnica).
Podobnie jak % en % wyszukuje wszystkie ciągi zawierające en litery w dowolnym miejscu ciąg (Bennet, zielony, McBadden).
Podobnie jak "_heryl" wyszukuje wszystkie nazwy list sześciu kończąc heryl literami (Cheryl, Sheryl).
Podobnie jak "n ars [eo] [B]" Wyszukiwanie Carsen, Karsen, Carson i Karson (Carson).
LIKE "[M-Z] inger" wyszukuje wszystkie nazwy kończące się ciągiem liter inger zaczynające się od wszelkich pojedynczą literę od m do Z (Ringer).
JAK mam [^ c] % " przeszukuje wszystkie nazwiska rozpoczynające się literą M, które nie mają literę c jako drugi literę (MacFeather).
Następująca kwerenda powoduje znalezienie wszystkich numerów telefonów w Person tabela, które zawierają kod obszaru 415:
SELECT Phone
FROM AdventureWorks2008R2.Person.Person
WHERE Phone LIKE '415%';
Można użyć NOT LIKE z tym samym symboli wieloznacznych.Aby znaleźć wszystkie numery telefonów w Person tabela, które zawierają kody obszarów innych niż 415, użyj jednej z tych kwerend równoważne:
SELECT Phone
FROM AdventureWorks2008R2.Person.Person
WHERE Phone NOT LIKE '415%';
-- Or
SELECT Phone
FROM AdventureWorks2008R2.Person.Person
WHERE NOT Phone LIKE '415%';
IS NOT NULL Klauzula może być używany z symboli wieloznacznych oraz LIKE klauzuli.Na przykład, poniższa kwerenda pobiera numery telefonów z Person tabela, w którym zaczyna się numer telefonu 415 i IS NOT NULL:
USE AdventureWorks2008R2;
GO
SELECT Phone
FROM Person.Person
WHERE Phone LIKE '415%' and Phone IS NOT NULL;
Ważne: |
|---|
Wyjście dla sprawozdań obejmujących podobne słowa kluczowego zależy od kolejność sortowania sortowania podczas instalacji.Aby uzyskać więcej informacji na temat skutków porządków sortowania, zobacz Praca z sortowania. |
Tylko warunki gdzie korzystających w text kolumny są jak IS NULL lub PATINDEX.
Bez podobne symbole wieloznaczne są interpretowane jako stałe zamiast jako wzorzec, który jest reprezentują tylko własne wartości.Następująca kwerenda usiłuje odnaleźć numerów, który składa się z czterech znaków 415% jedynie.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 AdventureWorks2008R2.Person.Person
WHERE Phone = '415%';
Innym ważnym zagadnieniem w przy użyciu symboli wieloznacznych jest ich wpływ na wydajność.Jeżeli symbol wieloznaczny rozpoczyna się wyrażenie, nie można użyć indeksu.(Podobnie jak byłoby nie wiedzieć, gdzie zacząć w książce telefonicznej, jeśli podana nazwa '% mith', nie 'Smith'.) Symbol wieloznaczny w lub na końcu wyrażenie nie wyklucza użycie indeksu.(Tak jak w książce telefonicznej, czy wiesz, gdzie 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ć znaki wieloznaczne.Istnieją dwie metody określania znaków, która normalnie symboli wieloznacznych:
Aby określić znak anulowania, należy użyć słowa kluczowego ESCAPE.Znak kontrolny jest umieszczany w symbolu wieloznacznego w strukturze, symbol wieloznaczny jest interpretowana jako znak.Na przykład, aby wyszukać ciąg 5% gdziekolwiek w ciągu, użyj:
WHERE ColumnA LIKE '%5/%%' ESCAPE '/'W tym LIKE klauzula, interlinia i kończące się znakiem procentu (%) są interpretowane jako symbole wieloznaczne, a znak procentu poprzedzony kreską ułamkową (/) jest interpretowana jako znak %.
Użyj nawiasy kwadratowe ([ ]) przez siebie, należy ująć symbolu wieloznacznego.Aby wyszukać łącznik (-), zamiast go do określ zakres wyszukiwania, użycie łącznika jako pierwszy znak wewnątrz zestaw nawiasów:
WHERE ColumnA LIKE '9[-]5'W poniższej tabela przedstawiono użycie symboli wieloznacznych w nawiasach kwadratowych.
Symbol
Znaczenie
PODOBNIE JAK 5 [%]
5%
PODOBNIE JAK 5% "
5 następują dowolne ciąg 0 lub więcej znaków
LIKE '[_] n'
_n
Podobnie jak "_n"
, w sprawie (i itd.)
LIKE "[a-cdf]"
, b, c, d i f
LIKE "[-acdf]"
-,, c, d i f
LIKE "["
[
PODOBNIE JAK "]"
]
Podczas porównywania ciągów znakó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żeli porównanie zwraca wszystkie wiersze z ciąg jak "abc" wymagana jest (abc następuje pojedyncza spacja), wiersza, w którym wartość kolumna jest abc (abc bez spacji) nie jest zwracana.Odwrotnie, jednak nie jest spełniony.Końcowe spacje w wyrażenie dopasowanie jest wzorcem są ignorowane.Jeżeli porównanie zwraca wszystkie wiersze z ciąg jak "abc" wymagana jest (abc bez spacji), zwracane są wszystkie wiersze, które zaczynają abc i mieć zero lub więcej spacjami.
Zobacz także
Ważne: