SUBSTRING (Transact-SQL)SUBSTRING (Transact-SQL)

DIESES THEMA GILT FÜR: jaSQL Server (ab 2008)jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Gibt einen Teil eines Zeichen-, Binär-, Text- oder Bildausdrucks in SQL ServerSQL Server zurück.Returns part of a character, binary, text, or image expression in SQL ServerSQL Server.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

SUBSTRING ( expression ,start , length )  

ArgumenteArguments

expressionexpression
Ist eine Zeichen, binäre, Text, Ntext, oder ImageAusdruck.Is a character, binary, text, ntext, or imageexpression.

startstart
Eine ganze Zahl oder "bigint" Ausdruck, der angibt, wo die zurückgegebenen Zeichen beginnen.Is an integer or bigint expression that specifies where the returned characters start. (Die Nummerierung ist 1 basierend, was bedeutet, dass das erste Zeichen im Ausdruck 1 ist).(The numbering is 1 based, meaning that the first character in the expression is 1). Wenn starten ist kleiner als 1 ist, beginnt der zurückgegebene Ausdruck beim ersten Zeichen, die im angegebenen Ausdruck.If start is less than 1, the returned expression will begin at the first character that is specified in expression. In diesem Fall wird die Anzahl der Zeichen, die zurückgegeben werden den größten Wert der Summe der starten + Länge– 1 oder 0.In this case, the number of characters that are returned is the largest value of either the sum of start + length- 1 or 0. Wenn starten ist größer als die Anzahl der Zeichen im Wertausdruck, wird ein Ausdruck mit der Länge 0 (null) zurückgegeben.If start is greater than the number of characters in the value expression, a zero-length expression is returned.

lengthlength
Eine positive ganze Zahl oder "bigint" Ausdruck, der angibt, wie viele Zeichen von der Ausdruck zurückgegeben werden.Is a positive integer or bigint expression that specifies how many characters of the expression will be returned. Wenn Länge ist negativ ist, wird ein Fehler generiert, und die Anweisung wird beendet.If length is negative, an error is generated and the statement is terminated. Wenn die Summe der starten und Länge ist größer als die Anzahl der Zeichen in Ausdruck, der gesamte Wertausdruck, beginnend bei startenzurückgegeben wird.If the sum of start and length is greater than the number of characters in expression, the whole value expression beginning at start is returned.

RückgabetypenReturn Types

Gibt Zeichendaten zurück, wenn Ausdruck ist einer der unterstützten Zeichendatentypen.Returns character data if expression is one of the supported character data types. Gibt Binärdaten zurück, wenn Ausdruck ist einer der unterstützten binäre Datentypen.Returns binary data if expression is one of the supported binary data types. Die zurückgegebene Zeichenfolge hat denselben Typ wie der angegebene Ausdruck, mit den folgenden Ausnahmen:The returned string is the same type as the specified expression with the exceptions shown in the table.

Angegebener AusdruckSpecified expression RückgabetypReturn type
char/varchar/textchar/varchar/text varcharvarchar
nchar/nvarchar/ntextnchar/nvarchar/ntext nvarcharnvarchar
binary/varbinary/imagebinary/varbinary/image varbinaryvarbinary

HinweiseRemarks

Die Werte für starten und Länge muss angegeben werden, in der Anzahl der Zeichen für Ntext, Char, oder Varchar Datentypen und Bytes für Text, Image, binäre, oder Varbinary Datentypen.The values for start and length must be specified in number of characters for ntext, char, or varchar data types and bytes for text, image, binary, or varbinary data types.

Die Ausdruck muss varchar(max) oder varbinary(max) bei der starten oder Länge enthält einen Wert größer als 2147483647.The expression must be varchar(max) or varbinary(max) when the start or length contains a value larger than 2147483647.

Ergänzende Zeichen (Ersatzpaare)Supplementary Characters (Surrogate Pairs)

Bei Verwendung von (SC Supplementary) Characters Sortierungen beide starten und Länge alle Ersatzzeichenpaare Ausdruck als einzelnes Zeichen.When using supplementary character (SC) collations, both start and length count each surrogate pair in expression as a single character. Weitere Informationen finden Sie unter Collation and Unicode Support.For more information, see Collation and Unicode Support.

BeispieleExamples

A.A. Verwenden von SUBSTRING mit einer ZeichenfolgeUsing SUBSTRING with a character string

Im folgenden Beispiel wird gezeigt, wie Sie nur einen Teil einer Zeichenfolge zurückgeben können.The following example shows how to return only a part of a character string. Aus der sys.databases Tabelle, diese Abfrage wird das System wieder Datenbanknamen in der ersten Spalte, die den ersten Buchstaben der Datenbank in der zweiten Spalte und der dritten und vierten Zeichen in die letzte Spalte.From the sys.databases table, this query returns the system database names in the first column, the first letter of the database in the second column, and the third and fourth characters in the final column.

SELECT name, SUBSTRING(name, 1, 1) AS Initial ,
SUBSTRING(name, 3, 2) AS ThirdAndFourthCharacters
FROM sys.databases  
WHERE database_id < 5;   

Im Folgenden finden Sie das Resultset.Here is the result set.

namename InitialInitial ThirdAndFourthCharactersThirdAndFourthCharacters
mastermaster mm stst
tempdbtempdb tt mpmp
modelmodel mm dede
msdbmsdb mm dbdb

So zeigen Sie den zweiten, dritten und vierten Buchstaben der Zeichenfolgenkonstanten abcdef an:Here is how to display the second, third, and fourth characters of the string constant abcdef.

SELECT x = SUBSTRING('abcdef', 2, 3);  

Im Folgenden finden Sie das Resultset.Here is the result set.

x  
----------  
bcd  

(1 row(s) affected)

B.B. Verwenden von SUBSTRING mit text-, ntext- und image-DatenUsing SUBSTRING with text, ntext, and image data

Hinweis

Um die folgenden Beispiele auszuführen, müssen Sie installieren die Pubs Datenbank.To run the following examples, you must install the pubs database.

Im folgende Beispiel wird gezeigt, wie die ersten 10 Zeichen aus jeder der zurückzugebenden eine Text und Image -Datenspalte in der pub_info Tabelle mit der pubs Datenbank.The following example shows how to return the first 10 characters from each of a text and image data column in the pub_info table of the pubs database. Text Daten werden zurückgegeben, als Varchar, und Image Daten werden zurückgegeben, als Varbinary.text data is returned as varchar, and image data is returned as varbinary.

USE pubs;  
SELECT pub_id, SUBSTRING(logo, 1, 10) AS logo,   
   SUBSTRING(pr_info, 1, 10) AS pr_info  
FROM pub_info  
WHERE pub_id = '1756';  

Im Folgenden finden Sie das Resultset.Here is the result set.

pub_id logo    pr_info
------ ---------------------- ----------
1756   0x474946383961E3002500 This is sa

(1 row(s) affected)

Das folgende Beispiel zeigt die Wirkung von SUBSTRING auf beiden Text und Ntext Daten.The following example shows the effect of SUBSTRING on both text and ntext data. Zunächst wird in diesem Beispiel eine neue Tabelle in der pubs-Datenbank namens npub_info erstellt.First, this example creates a new table in the pubs database named npub_info. Im nächsten Schritt wird die Spalte pr_info in der npub_info-Tabelle aus den ersten 80 Zeichen der pub_info.pr_info-Spalte erstellt und ein ü als erstes Zeichen hinzugefügt.Second, the example creates the pr_info column in the npub_info table from the first 80 characters of the pub_info.pr_info column and adds an ü as the first character. Abschließend wird eine INNER JOIN Ruft alle Verleger-IDs und die SUBSTRING beider der Text und Ntext -Spalten mit Verlegerinformationen.Lastly, an INNER JOIN retrieves all publisher identification numbers and the SUBSTRING of both the text and ntext publisher information columns.

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  
    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 pr INNER JOIN npub_info npr  
   ON pr.pub_id = npr.pub_id  
ORDER BY pr.pub_id ASC;  

Beispiele: Azure SQL Data WarehouseAzure SQL Data Warehouse und Parallel Data WarehouseParallel Data WarehouseExamples: Azure SQL Data WarehouseAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

C.C. Verwenden von SUBSTRING mit einer ZeichenfolgeUsing SUBSTRING with a character string

Im folgenden Beispiel wird gezeigt, wie Sie nur einen Teil einer Zeichenfolge zurückgeben können.The following example shows how to return only a part of a character string. Diese Abfrage gibt aus der dbo.DimEmployee-Tabelle den Nachnamen eines jeden Autors in einer Spalte und den ersten Buchstaben des entsprechenden Vornamens in der zweiten Spalte zurück.From the dbo.DimEmployee table, this query returns the last name in one column with only the first initial in the second column.

-- Uses AdventureWorks  

SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial  
FROM dbo.DimEmployee  
WHERE LastName LIKE 'Bar%'  
ORDER BY LastName;  

Im Folgenden finden Sie das Resultset.Here is the result set.

LastName             Initial
-------------------- -------
Barbariol            A
Barber               D
Barreto de Mattos    P

Im folgende Beispiel wird gezeigt, wie das zweite zurückzugebenden dritten und vierten Buchstaben der Zeichenfolgenkonstanten abcdef.The following example shows how to return the second, third, and fourth characters of the string constant abcdef.

USE ssawPDW;  

SELECT TOP 1 SUBSTRING('abcdef', 2, 3) AS x FROM dbo.DimCustomer;  

Im Folgenden finden Sie das Resultset.Here is the result set.

x
-----
bcd

Siehe auchSee Also

LEFT (Transact-SQL)LEFT (Transact-SQL)
LTRIM (Transact-SQL)LTRIM (Transact-SQL)
RIGHT (Transact-SQL)RIGHT (Transact-SQL)
RTRIM (Transact-SQL)RTRIM (Transact-SQL)
STRING_SPLIT (Transact-SQL)STRING_SPLIT (Transact-SQL)
TRIM (Transact-SQL)TRIM (Transact-SQL)
Zeichenfolgenfunktionen ( Transact-SQL )String Functions (Transact-SQL)