Udostępnij za pośrednictwem


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