Dela via


CHARINDEX (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft Fabric

Den här funktionen söker efter ett teckenuttryck i ett andra teckenuttryck och returnerar startpositionen för det första uttrycket om det hittas.

Transact-SQL syntaxkonventioner

Syntax

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

Arguments

expressionToFind

Ett teckenuttryck som innehåller sekvensen som ska hittas. expressionToFind har en gräns på 8 000 tecken.

expressionToSearch

Ett teckenuttryck att söka efter.

start_location

Ett heltal eller bigint-uttryck där sökningen startar. Om start_location inte anges, har ett negativt värde eller har ett nollvärde (0) startar sökningen i början av expressionToSearch.

Returtyper

bigint if expressionToSearch har datatypen nvarchar(max),varbinary(max)eller varchar(max).annars.

Anmärkningar

Om uttrycket expressionToFind eller expressionToSearch har en Unicode-datatyp (nchar eller nvarchar), och det andra uttrycket inte gör det, CHARINDEX konverterar funktionen det andra uttrycket till en Unicode-datatyp. CHARINDEX kan inte användas med datatyperna bild, ntext eller text .

Om uttrycket expressionToFind eller expressionToSearch har ett NULL värde CHARINDEX returnerar NULL.

Om CHARINDEX inte hittar expressionToFind i expressionToSearch returnerar CHARINDEX0.

CHARINDEX utför jämförelser baserat på indatasortering. Om du vill göra en jämförelse i en angiven sortering använder du COLLATE för att tillämpa en explicit sortering på indata.

Startpositionen som returneras är 1-baserad, inte 0-baserad.

0x0000 (char(0)) är ett odefinierat tecken i Windows-sortering och kan inte inkluderas i CHARINDEX.

Kompletterande tecken (surrogatpar)

När du använder extra teckensortering (SC) räknar både start_location och returvärdet surrogatpar som ett tecken, inte två. Mer information finns i Stöd för sortering och Unicode.

Examples

A. Returnera startpositionen för ett uttryck

Det här exemplet söker bicycle efter i den sökta strängvärdevariabeln @document.

DECLARE @document AS VARCHAR (64);

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

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

Här är resultatuppsättningen.

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

B. Sök från en viss position

I det här exemplet används den valfria parametern start_location för vital att starta sökningen efter med det femte tecknet i den sökta strängvärdevariabeln @document.

DECLARE @document AS VARCHAR (64);

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

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

Här är resultatuppsättningen.

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

C. Sök efter ett obefintligt uttryck

Det här exemplet visar resultatuppsättningen när CHARINDEX inte hittar uttrycketToFind i expressionToSearch.

DECLARE @document AS VARCHAR (64);

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

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

Här är resultatuppsättningen.

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

Det här exemplet visar en skiftlägeskänslig sökning efter strängen TEST i den sökta strängen This is a Test.

USE tempdb;
GO

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

Här är resultatuppsättningen.

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

Det här exemplet visar en skiftlägeskänslig sökning efter strängen Test i den sökta strängen This is a Test.

USE tempdb;
GO

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

Här är resultatuppsättningen.

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

Det här exemplet visar en skiftlägeskänslig sökning efter strängen TEST i den sökta strängen This is a Test.

USE tempdb;
GO

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

Här är resultatuppsättningen.

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

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

F. Sök från början av ett stränguttryck

Det här exemplet returnerar den första platsen för strängen is i strängen This is a string, med början från position 1 (det första tecknet) i This is a string.

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

Här är resultatuppsättningen.

---------
3

G. Sök från en annan position än den första positionen

Det här exemplet returnerar den första platsen för strängen is i strängen This is a stringoch startar sökningen från position 4 (det fjärde tecknet).

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

Här är resultatuppsättningen.

---------
 6

H. Resultat när strängen inte hittas

Det här exemplet visar returvärdet när CHARINDEX inte hittar strängen string_pattern i den sökta strängen.

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

Här är resultatuppsättningen.

---------
0