Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
              Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
Met deze functie wordt gezocht naar één tekenexpressie binnen een tweede tekenexpressie, zodat de beginpositie van de eerste expressie wordt geretourneerd als deze wordt gevonden.
              
              
              Transact-SQL syntaxisconventies
Syntaxis
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
Arguments
expressionToFind
Een tekenexpressie die de reeks bevat die moet worden gevonden. expressionToFind heeft een limiet van 8000 tekens.
expressionToSearch
Een tekenexpressie om te zoeken.
start_location
Een geheel getal of een bigint-expressie waarmee de zoekopdracht wordt gestart. Als start_location niet is opgegeven, een negatieve waarde heeft of een nulwaarde (0) heeft, begint de zoekopdracht aan het begin van expressionToSearch.
Retourtypen
bigint als expressionToSearch een gegevenstype nvarchar(max), varbinary(max), of varchar(max) heeft; anders .
Opmerkingen
Als de expressieToFind of expressionToSearch een Unicode-gegevenstype (nchar of nvarchar) heeft en de andere expressie niet, converteert de CHARINDEX functie die andere expressie naar een Unicode-gegevenstype. 
              CHARINDEX kan niet worden gebruikt met gegevenstypen voor afbeeldingen, ntext of tekst .
Als de expressieToFind of expressionToSearch-expressie een NULL waarde heeft, CHARINDEX retourneert NULLu .
Als CHARINDEXexpressieToFind niet wordt gevonden binnen expressionToSearch, CHARINDEX retourneert 0u .
              CHARINDEX voert vergelijkingen uit op basis van de invoersortering. Als u een vergelijking in een opgegeven sortering wilt uitvoeren, gebruikt COLLATE u om een expliciete sortering toe te passen op de invoer.
De geretourneerde beginpositie is gebaseerd op 1, niet op basis van 0.
              0x0000 (char(0)) is een niet-gedefinieerd teken in Windows-sorteringen en kan niet worden opgenomen in CHARINDEX.
Aanvullende tekens (surrogaatparen)
Bij het gebruik van sc-sorteringen (aanvullende tekens), zowel start_location als het aantal surrogaatparen als één teken, niet twee. Zie sortering en Unicode-ondersteuning voor meer informatie.
Voorbeelden
Eén. De beginpositie van een expressie retourneren
In dit voorbeeld wordt gezocht bicycle in de variabele @documentvoor de gezochte tekenreekswaarde.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';
SELECT CHARINDEX('bicycle', @document);
GO
Dit is de resultatenset.
-----------
48
B. Zoeken vanaf een specifieke positie
In dit voorbeeld wordt de optionele parameter start_location gebruikt om de zoekopdracht vital te starten op het vijfde teken van de variabele @documentvoor de gezochte tekenreekswaarde.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';
SELECT CHARINDEX('vital', @document, 5);
GO
Dit is de resultatenset.
-----------
16
C. Zoeken naar een niet-bestaande expressie
In dit voorbeeld ziet u de resultatenset wanneer CHARINDEXexpressieToFind niet wordt gevonden in expressionToSearch.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';
SELECT CHARINDEX('bike', @document);
GO
Dit is de resultatenset.
-----------
0
D. Een hoofdlettergevoelige zoekopdracht uitvoeren
In dit voorbeeld ziet u een hoofdlettergevoelige zoekopdracht naar de tekenreeks TEST in de gezochte tekenreeks This is a Test.
USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CS_AS);
Dit is de resultatenset.
-----------
0
In dit voorbeeld ziet u een hoofdlettergevoelige zoekopdracht naar de tekenreeks Test in de gezochte tekenreeks This is a Test.
USE tempdb;
GO
SELECT CHARINDEX('Test', 'This is a Test' COLLATE Latin1_General_CS_AS);
Dit is de resultatenset.
-----------
11
E. Een niet-hoofdlettergevoelige zoekopdracht uitvoeren
In dit voorbeeld ziet u een niet-hoofdlettergevoelige zoekopdracht naar de tekenreeks TEST in een doorzochte tekenreeks This is a Test.
USE tempdb;
GO
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CI_AS);
GO
Dit is de resultatenset.
-----------
11
Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)
F. Zoeken vanaf het begin van een tekenreeksexpressie
In dit voorbeeld wordt de eerste locatie van de tekenreeks in tekenreeks isThis is a stringgeretourneerd, beginnend vanaf positie 1 (het eerste teken) van This is a string.
SELECT CHARINDEX('is', 'This is a string');
Dit is de resultatenset.
---------
3
G. Zoeken vanaf een andere positie dan de eerste positie
In dit voorbeeld wordt de eerste locatie van de tekenreeks in tekenreeks isThis is a stringgeretourneerd, waarbij de zoekopdracht wordt gestart vanaf positie 4 (het vierde teken).
SELECT CHARINDEX('is', 'This is a string', 4);
Dit is de resultatenset.
---------
 6
H. Resultaten wanneer de tekenreeks niet wordt gevonden
In dit voorbeeld ziet u de retourwaarde wanneer CHARINDEX de tekenreeks niet wordt gevonden string_pattern in de gezochte tekenreeks.
SELECT TOP (1) CHARINDEX('at', 'This is a string')
FROM dbo.DimCustomer;
Dit is de resultatenset.
---------
0