Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza 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
D. Wyszukiwanie uwzględniające wielkość liter
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
E. Wykonywanie wyszukiwania bez uwzględniania wielkości liter
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