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

GILT FÜR: jaSQL Server (ab 2008) jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure 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-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

SUBSTRING ( expression ,start , length )  

ArgumenteArguments

expressionexpression
Ist ein character-, binary-, text-, ntext- oder image-Ausdruck.Is a character, binary, text, ntext, or image expression.

startstart
ist eine ganze Zahl oder ein 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 basiert auf 1, das 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 start kleiner als 1 ist, beginnt der zurückgegebene Ausdruck beim ersten Zeichen, das in expression angegeben wird.If start is less than 1, the returned expression will begin at the first character that is specified in expression. In diesem Fall handelt es sich bei der Anzahl von zurückgegebenen Zeichen um den größten Wert der Summe von start + length- 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 start größer ist als die Anzahl der Zeichen in dem Werteausdruck, wird eine Zeichenfolge der Länge 0 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 ein bigint-Ausdruck, die angeben, wie viele Zeichen des Ausdrucks zurückgegeben werden.Is a positive integer or bigint expression that specifies how many characters of the expression will be returned. Wenn length 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 von start und length größer ist als die Anzahl der Zeichen in expression, wird der gesamte Wertausdruck, beginnend bei start, zurückgegeben.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 expression einer der unterstützten Zeichendatentypen ist.Returns character data if expression is one of the supported character data types. Gibt Binärdaten zurück, wenn expression einer der unterstützten Binärdatentypen ist.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

RemarksRemarks

Die Werte für start und length müssen als Anzahl der Zeichen für die Datentypen ntext, char oder varchar und Bytes für die Datentypen text, image, binary oder varbinary angegeben werden.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.

Der Ausdruck muss varchar(max) oder varbinary(max) sein, wenn start oder length einen Wert enthält, der größer als 2.147.483.647 ist.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 SC (Supplementary Characters)-Sortierungen werden alle Ersatzzeichenpaare in expression von start und length als einzelne Zeichen behandelt.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. Diese Abfrage gibt aus der Tabelle sys.databases in der ersten Spalte die Namen der Systemdatenbank zurück, in der zweiten Spalten den ersten Buchstaben der Datenbank und in der letzten Spalte den dritten und vierten Buchstaben.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

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

Im folgenden Beispiel wird gezeigt, wie die ersten 10 Zeichen aus allen text- und image-Datenspalten in der pub_info-Tabelle der pubs-Datenbank zurückgegeben werden.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 als varchar zurückgegeben, und image-Daten werden als varbinary zurückgegeben.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)

Im folgenden Beispiel wird die Wirkung von SUBSTRING auf text- und auf ntext-Daten gezeigt.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 ruft ein INNER JOIN alle Verleger-IDs sowie den SUBSTRING der text- und ntext-Spalten mit Verlegerinformationen ab.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 Warehouse.Examples: 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

Das folgende Beispiel stellt dar, wie die zweiten, dritten und vierten Buchstaben der Zeichenfolgenkonstanten abcdef zurückgegeben werden.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

Weitere Informationen finden Sie unterSee 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)