Udostępnij za pomocą


INDEKS CHAR (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Ta funkcja wyszukuje jedno wyrażenie znaków wewnątrz drugiego wyrażenia znaku, zwracając pozycję początkową pierwszego wyrażenia, jeśli zostanie znalezione.

Transact-SQL konwencje składni

Składnia

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

Arguments

expressionToFind

Wyrażenie znaku zawierające sekwencję do znalezienia. WyrażenieToFind ma limit 8000 znaków.

expressionToSearch

Wyrażenie znaku do wyszukania.

start_location

Liczba całkowita lub wyrażenie bigint, na którym rozpoczyna się wyszukiwanie. Jeśli start_location nie jest określona, ma wartość ujemną lub ma wartość zero (0), wyszukiwanie rozpoczyna się na początku wyrażeniaToSearch.

Typy zwracane

bigint if expressionToSearch ma typ danych nvarchar(max), varbinary(max)lub varchar(max).int w przeciwnym razie.

Uwagi

Jeśli wyrażenie ExpressionToFind lub expressionToSearch ma typ danych Unicode (nchar lub nvarchar), a drugie wyrażenie nie, CHARINDEX funkcja konwertuje to inne wyrażenie na typ danych Unicode. CHARINDEX Nie można używać z typami danych obrazu, ntekstu ani tekstu .

Jeśli wyrażenie ExpressionToFind lub expressionToSearch ma NULL wartość, CHARINDEX zwraca wartość NULL.

Jeśli CHARINDEXwyrażenieToFind nie znajduje się w obiekcie expressionToSearch, CHARINDEX zwraca wartość 0.

CHARINDEX wykonuje porównania na podstawie sortowania danych wejściowych. Aby przeprowadzić porównanie w określonym sortowaniu, użyj polecenia COLLATE , aby zastosować jawne sortowanie do danych wejściowych.

Zwracana pozycja początkowa jest oparta na 1, a nie na podstawie 0.

0x0000 (char(0)) jest niezdefiniowanym znakiem sortowania systemu Windows i nie można go uwzględnić w pliku CHARINDEX.

Znaki dodatkowe (pary zastępcze)

W przypadku używania sortowania znaków dodatkowych (SC) zarówno start_location, jak i liczby wartości zwracanych jako jeden znak, a nie dwa. Aby uzyskać więcej informacji, zobacz Obsługa sortowania i unicode.

Przykłady

Odp. Zwraca pozycję początkową wyrażenia

Ten przykład wyszukuje ciąg bicycle w wyszukiwanej zmiennej @documentwartości ciągu .

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('bicycle', @document);
GO

Oto zestaw wyników.

-----------
48

B. Wyszukiwanie z określonej pozycji

W tym przykładzie użyto opcjonalnego parametru start_location , aby rozpocząć wyszukiwanie vital w piątym znaku zmiennej @documentwartości ciągu wyszukiwania .

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('vital', @document, 5);
GO

Oto zestaw wyników.

-----------
16

C. Wyszukiwanie nieistniejących wyrażeń

W tym przykładzie pokazano zestaw wyników, gdy CHARINDEX nie można odnaleźć wyrażeniaToFind w obiekcie expressionToSearch.

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('bike', @document);
GO

Oto zestaw wyników.

-----------
0

W tym przykładzie pokazano wyszukiwanie TEST ciągu w wyszukiwanym ciągu This is a Testz uwzględnieniem wielkości liter.

USE tempdb;
GO

--perform a case sensitive search
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CS_AS);

Oto zestaw wyników.

-----------
0

W tym przykładzie pokazano wyszukiwanie Test ciągu w wyszukiwanym ciągu This is a Testz uwzględnieniem wielkości liter.

USE tempdb;
GO

SELECT CHARINDEX('Test', 'This is a Test' COLLATE Latin1_General_CS_AS);

Oto zestaw wyników.

-----------
11

W tym przykładzie pokazano wyszukiwanie TEST ciągu bez uwzględniania wielkości liter w wyszukiwanym ciągu This is a Test.

USE tempdb;
GO

SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CI_AS);
GO

Oto zestaw wyników.

-----------
11

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

F. Wyszukiwanie od początku wyrażenia ciągu

W tym przykładzie zwraca pierwszą lokalizację ciągu is w ciągu This is a string, zaczynając od pozycji 1 (pierwszy znak) ciągu This is a string.

SELECT CHARINDEX('is', 'This is a string');

Oto zestaw wyników.

---------
3

G. Wyszukiwanie z pozycji innej niż pierwsza pozycja

Ten przykład zwraca pierwszą lokalizację ciągu w ciągu isThis is a string, rozpoczynając wyszukiwanie z pozycji 4 (czwarty znak).

SELECT CHARINDEX('is', 'This is a string', 4);

Oto zestaw wyników.

---------
 6

H. Wyniki, gdy ciąg nie zostanie znaleziony

W tym przykładzie pokazano wartość zwracaną, gdy CHARINDEX ciąg nie znajduje string_pattern w wyszukiwanym ciągu.

SELECT TOP (1) CHARINDEX('at', 'This is a string')
FROM dbo.DimCustomer;

Oto zestaw wyników.

---------
0