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
Warehouse in Microsoft Fabric
Retourneert een deel van een teken-, binaire, tekst- of afbeeldingsexpressie in SQL Server.
Transact-SQL syntaxis-conventies
Syntaxis
Syntaxis voor SQL Server.
SUBSTRING ( expression , start , length )
Syntaxis voor Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, Analytics Platform System (PDW) en warehouse- en SQL-analyse-eindpunt in Microsoft Fabric.
SUBSTRING ( expression , start [ , length ] )
Argumenten
expressie
Een teken, binair, tekst, ntekst of afbeeldingsexpressie.
starten
Een geheel getal of bigint-expressie die aangeeft waar de geretourneerde tekens beginnen. (De nummering is gebaseerd op 1, wat betekent dat het eerste teken in de expressie 1 is. Als het begin kleiner is dan 1, begint de geretourneerde expressie bij het eerste teken dat is opgegeven in de expressie. In dit geval is het aantal tekens dat wordt geretourneerd de grootste waarde van de som van de beginlengte + - 1 of 0. Als het begin groter is dan het aantal tekens in de waardeexpressie, wordt een expressie met lengte nul geretourneerd.
lengte
Een positief geheel getal of een bigint-expressie die aangeeft hoeveel tekens van de expressie worden geretourneerd. Als de lengte negatief is, wordt er een fout gegenereerd en wordt de instructie beëindigd. Als de som van begin en lengte groter is dan het aantal tekens in de expressie, wordt de gehele waardeexpressie die begint bij het begin geretourneerd. Als de lengte wordt weggelaten, worden alle tekens van de beginpositie tot het einde van de expressie geretourneerd.
U kunt subtekenreeksen gebruiken met een optioneel lengteargument in Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, Analytics Platform System (PDW) en warehouse- en SQL-analyse-eindpunt in Microsoft Fabric. Als u echter voor NULL
, SUBSTRING
retourneert NULL
. Controleer E. Gebruik SUBTEKENREEKS met optioneel lengteargument voor een voorbeeld.
Retourtypen
Retourneert tekengegevens als expressie een van de ondersteunde tekengegevenstypen is. Retourneert binaire gegevens als expressie een van de ondersteunde binaire gegevenstypen is. De geretourneerde tekenreeks is hetzelfde type als de opgegeven expressie met de uitzonderingen die in de tabel worden weergegeven.
Opgegeven expressie | Resultaattype |
---|---|
verkolen / varchar / Sms | varchar |
nchar / nvarchar / ntekst | nvarchar |
binair / varbinary / beeld | varbinair |
Opmerkingen
De waarden voor begin en lengte moeten worden opgegeven in het aantal tekens voor gegevenstypen ntext, teken of varchar en bytes voor tekst, afbeelding, binair of varbinair gegevenstype.
De expressie moet varchar(max) of varbinary(max) zijn wanneer het begin of de lengte een waarde bevat die groter is dan 2.147.483.647.
Aanvullende tekens (surrogaatparen)
Wanneer u sc-sorteringen (aanvullende tekens) gebruikt, tellen zowel begin - als lengteaantallen elk surrogaatpaar in expressie als één teken. Zie Sortering en Unicode-ondersteuningvoor meer informatie.
Voorbeelden
Eén. SUBTEKENREEKS gebruiken met een tekenreeks
In het volgende voorbeeld ziet u hoe u slechts een deel van een tekenreeks retourneert. Uit de sys.databases
tabel retourneert deze query de systeemdatabasenamen in de eerste kolom, de eerste letter van de database in de tweede kolom en de derde en vierde tekens in de laatste kolom.
SELECT name,
SUBSTRING(name, 1, 1) AS Initial,
SUBSTRING(name, 3, 2) AS ThirdAndFourthCharacters
FROM sys.databases
WHERE database_id < 5;
Hier is het resultatenoverzicht.
naam | Initiaal | DerdeEnVierdeKarakters |
---|---|---|
master |
m |
st |
tempdb |
t |
mp |
model |
m |
de |
msdb |
m |
db |
Als u de tweede, derde en vierde tekens van de tekenreeksconstante abcdef
wilt weergeven, gebruikt u de volgende query.
SELECT SUBSTRING('abcdef', 2, 3) AS x;
Hier is het resultatenoverzicht.
x
----------
bcd
B. SUBTEKENREEKS gebruiken met tekst-, ntekst- en afbeeldingsgegevens
Opmerking
Als u de volgende voorbeelden wilt uitvoeren, moet u de pubs-database installeren.
In het volgende voorbeeld ziet u hoe u de eerste 10 tekens retourneert uit elk van een kolom met tekst - en afbeeldingsgegevens in de pub_info
tabel van de pubs
database.
tekstgegevens worden geretourneerd als varchar en afbeeldingsgegevens worden geretourneerd als varbinary.
USE pubs;
GO
SELECT pub_id,
SUBSTRING(logo, 1, 10) AS logo,
SUBSTRING(pr_info, 1, 10) AS pr_info
FROM pub_info
WHERE pub_id = '1756';
Hier is het resultatenoverzicht.
pub_id logo pr_info
------ ---------------------- ----------
1756 0x474946383961E3002500 This is sa
In het volgende voorbeeld ziet u het effect van SUBSTRING
zowel tekst - als ntekstgegevens . In dit voorbeeld wordt eerst een nieuwe tabel gemaakt in de database met de pubs
naam npub_info
. Ten tweede wordt in het voorbeeld de pr_info
kolom in de npub_info
tabel gemaakt op basis van de eerste 80 tekens van de pub_info.pr_info
kolom en wordt een ü
kolom toegevoegd als het eerste teken.
INNER JOIN
Ten slotte worden alle uitgeversidentificatienummers en de SUBSTRING
kolommen met gegevens van de tekst- en ntekstuitgever opgehaald.
IF EXISTS (SELECT table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name = 'npub_info')
DROP TABLE npub_info;
GO
-- Create npub_info table in pubs database. Borrowed from instpubs.sql.
USE pubs;
GO
CREATE TABLE npub_info
(
pub_id CHAR (4) NOT NULL FOREIGN KEY
REFERENCES publishers (pub_id)
CONSTRAINT UPKCL_npubinfo PRIMARY KEY CLUSTERED,
pr_info NTEXT NULL
);
GO
-- Fill the pr_info column in npub_info with international data.
RAISERROR ('Now at the inserts to pub_info...', 0, 1);
GO
INSERT npub_info
VALUES ('0736', N'üThis is sample text data for New Moon Books, publisher 0736 in the pubs database'),
('0877', N'üThis is sample text data for Binnet & Hardley, publisher 0877 in the pubs databa'),
('1389', N'üThis is sample text data for Algodata Infosystems, publisher 1389 in the pubs da'),
('9952', N'üThis is sample text data for Scootney Books, publisher 9952 in the pubs database'),
('1622', N'üThis is sample text data for Five Lakes Publishing, publisher 1622 in the pubs d'),
('1756', N'üThis is sample text data for Ramona Publishers, publisher 1756 in the pubs datab'),
('9901', N'üThis is sample text data for GGG&G, publisher 9901 in the pubs database. GGG&G i'),
('9999', N'üThis is sample text data for Lucerne Publishing, publisher 9999 in the pubs data');
GO
-- Join between npub_info and pub_info on pub_id.
SELECT pr.pub_id,
SUBSTRING(pr.pr_info, 1, 35) AS pr_info,
SUBSTRING(npr.pr_info, 1, 35) AS npr_info
FROM pub_info AS pr
INNER JOIN npub_info AS npr
ON pr.pub_id = npr.pub_id
ORDER BY pr.pub_id ASC;
Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)
C. SUBTEKENREEKS gebruiken met een tekenreeks
In het volgende voorbeeld ziet u hoe u slechts een deel van een tekenreeks retourneert. In de dbo.DimEmployee
tabel retourneert deze query de familienaam in één kolom met alleen de eerste initiële in de tweede kolom.
-- Uses AdventureWorks
SELECT LastName,
SUBSTRING(FirstName, 1, 1) AS Initial
FROM dbo.DimEmployee
WHERE LastName LIKE 'Bar%'
ORDER BY LastName;
Hier is het resultatenoverzicht.
LastName Initial
-------------------- -------
Barbariol A
Barber D
Barreto de Mattos P
In het volgende voorbeeld ziet u hoe u de tweede, derde en vierde tekens van de tekenreeksconstante abcdef
retourneert.
USE ssawPDW;
SELECT TOP 1 SUBSTRING('abcdef', 2, 3) AS x
FROM dbo.DimCustomer;
Hier is het resultatenoverzicht.
x
-----
bcd
D. SUBTEKENREEKS met NULL
lengteargument gebruiken
SELECT SUBSTRING('123abc', 4, NULL) AS [NULL length];
Hier is het resultatenoverzicht.
NULL length
-----------
NULL
E. SUBTEKENREEKS gebruiken met optioneel lengteargument
Van toepassing op: Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, Analytics Platform System (PDW) en warehouse- en SQL-analyse-eindpunt in Microsoft Fabric
In het volgende voorbeeld ziet u hoe u slechts een deel van een tekenreeks retourneert vanaf een bepaalde beginpositie. Omdat het argument lengte niet is opgegeven, wordt de lengte standaard ingesteld op het retourneren van de resterende tekens in de tekenreeks.
SELECT SUBSTRING('123abc', 4) AS y;
Hier is het resultatenoverzicht.
y
-----
abc
F. Subtekenreeks zonder een lengteargument gebruiken om vervangingsonderdelen te vinden in de inventaris AdventureWorks2022
USE AdventureWorks2022;
GO
SELECT [ProductDescriptionID],
[Description],
SUBSTRING([Description], LEN('Replacement') + 1) AS [Replacement-Part]
FROM [Production].[ProductDescription]
WHERE [Description] LIKE 'Replacement%';
Hier is het resultatenoverzicht.
ProductbeschrijvingID | Beschrijving | Replacement-Part |
---|---|---|
686 | Vervangend bergwiel voor de instaprijder. | bergwiel voor instaprijder. |
687 | Vervangend bergwiel voor de casual tot serieuze renner. | Mountainbike voor de casual tot serieuze rijder. |
689 | Vervangend voorwiel voor instapniveau fietser. | voorwiel voor instapniveau fietser. |
867 | Vervangend achterbergwiel voor de renner op het instapniveau. | achterbergwiel voor instaprijder. |
868 | Vervangend achterwiel voor de casual tot serieuze renner. | achterbergwiel voor de casual tot serieuze renner. |
870 | Vervangend achterwiel voor fietser op instapniveau. | achterwiel voor fietser op instapniveau. |
1981 | Vervangend bergwiel voor de instaprijder. | bergwiel voor instaprijder. |
1987 | Vervangend bergwiel voor de casual tot serieuze renner. | Mountainbike voor de casual tot serieuze rijder. |
1999 | Vervangend achterwiel voor fietser op instapniveau. | achterwiel voor fietser op instapniveau. |