Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
punkt końcowy analizy SQL w usłudze Microsoft Fabric
Magazyn w usłudze Microsoft Fabric
Zwraca część znaku, pliku binarnego, tekstu lub wyrażenia obrazu w programie SQL Server.
Transact-SQL konwencje składni
Składnia
Składnia programu SQL Server.
SUBSTRING ( expression , start , length )
Składnia usług Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, Analytics Platform System (PDW) oraz Punkt końcowy analizy SQL w usłudze Microsoft Fabric.
SUBSTRING ( expression , start [ , length ] )
Argumenty (w programowaniu)
wyrażenie
Znak, binarny, tekst, ntekst lub wyrażenieobrazu.
Wyrażenie całkowite lub bigint określające, gdzie zaczynają się zwracane znaki. (Numerowanie jest oparte na 1, co oznacza, że pierwszy znak w wyrażeniu to 1). Jeśli wartość startowa jest mniejsza niż 1, zwracane wyrażenie zaczyna się od pierwszego znaku określonego w wyrażeniu. W takim przypadku zwracana liczba znaków jest największą wartością sumydługości + — 1 lub 0. Jeśli wartość startowa jest większa niż liczba znaków w wyrażeniu wartości, zwracane jest wyrażenie o zerowej długości.
długości
Dodatnia liczba całkowita lub wyrażenie bigint określające, ile znaków wyrażenia jest zwracanych. Jeśli długość jest ujemna, zostanie wygenerowany błąd i instrukcja zostanie zakończona. Jeśli suma początkowej i długości jest większa niż liczba znaków w wyrażeniu, zwracane jest całe wyrażenie wartości rozpoczynające się od początku . Jeśli długość zostanie pominięta, zwracane są wszystkie znaki od pozycji początkowej do końca wyrażenia.
Możesz użyć podciągów z opcjonalnym argumentem długości w usługach Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, Analytics Platform System (PDW) i Warehouse oraz punkt końcowy analizy SQL w usłudze Microsoft Fabric. Jeśli jednak używasz NULL
parametru dla długości, SUBSTRING
zwraca wartość NULL
. Zapoznaj się z przykładem E. Użyj argumentu SUBSTRING z opcjonalnym argumentem długości .
Typy zwracane
Zwraca dane znaków, jeśli wyrażenie jest jednym z obsługiwanych typów danych znaków. Zwraca dane binarne, jeśli wyrażenie jest jednym z obsługiwanych typów danych binarnych . Zwrócony ciąg jest tym samym typem co określone wyrażenie z wyjątkami przedstawionymi w tabeli.
Określone wyrażenie | Typ zwracany |
---|---|
Char / varchar / Tekst | varchar |
nchar / nvarchar / ntekst | nvarchar |
dwójkowy / varbinary / obraz | varbinary (zmienna) |
Uwagi
Wartości początkowe i długości muszą być określone w liczbie znaków dla typów danych ntext, char lub varchar oraz bajtów dla typów danych tekstowych, obrazów, binarnych lub varbinary .
Wyrażenie musi mieć wartość varchar(max) lub varbinary(max), gdy początek lub długość zawiera wartość większą niż 2147 483 647.
Znaki dodatkowe (pary zastępcze)
W przypadku używania sortowania znaków dodatkowych (SC) zarówno początkowe , jak i długości zliczają każdą parę zastępczą w wyrażeniu jako pojedynczy znak. Aby uzyskać więcej informacji, zobacz Collation and Unicode support.
Przykłady
Odp. Używanie ciągu SUBSTRING z ciągiem znaków
W poniższym przykładzie pokazano, jak zwrócić tylko część ciągu znaków.
sys.databases
Z tabeli to zapytanie zwraca nazwy systemowych baz danych w pierwszej kolumnie, pierwszą literę bazy danych w drugiej kolumnie oraz trzecie i czwarte znaki w końcowej kolumnie.
SELECT name,
SUBSTRING(name, 1, 1) AS Initial,
SUBSTRING(name, 3, 2) AS ThirdAndFourthCharacters
FROM sys.databases
WHERE database_id < 5;
Oto zestaw wyników.
nazwa | Inicjał | TrzeciaICzwartaPostacie |
---|---|---|
master |
m |
st |
tempdb |
t |
mp |
model |
m |
de |
msdb |
m |
db |
Aby wyświetlić drugie, trzecie i czwarte znaki stałej abcdef
ciągu, użyj następującego zapytania.
SELECT SUBSTRING('abcdef', 2, 3) AS x;
Oto zestaw wyników.
x
----------
bcd
B. Używanie podciągów z danymi tekstowymi, ntekstowymi i obrazami
Uwaga
Aby uruchomić następujące przykłady, należy zainstalować bazę danych pubs.
W poniższym przykładzie pokazano, jak zwrócić pierwsze 10 znaków z każdej kolumny danych tekstowych i obrazówpub_info
w pubs
tabeli bazy danych.
dane tekstowe są zwracane jako varchar, a dane obrazu są zwracane jako elementy 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';
Oto zestaw wyników.
pub_id logo pr_info
------ ---------------------- ----------
1756 0x474946383961E3002500 This is sa
W poniższym przykładzie pokazano wpływ SUBSTRING
zarówno na dane tekstowe , jak i ntekstowe . Najpierw w tym przykładzie pubs
zostanie utworzona nowa tabela w bazie danych o nazwie npub_info
. Po drugie, przykład tworzy kolumnę pr_info
w npub_info
tabeli z pierwszych 80 znaków pub_info.pr_info
w kolumnie i dodaje jako ü
pierwszy znak. Na koniec element INNER JOIN
pobiera wszystkie numery identyfikacyjne wydawcy oraz SUBSTRING
kolumny tekstowe i ntekstowe .
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;
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
C. Używanie ciągu SUBSTRING z ciągiem znaków
W poniższym przykładzie pokazano, jak zwrócić tylko część ciągu znaków.
dbo.DimEmployee
Z tabeli to zapytanie zwraca nazwę rodziny w jednej kolumnie z tylko pierwszym początkowym w drugiej kolumnie.
-- Uses AdventureWorks
SELECT LastName,
SUBSTRING(FirstName, 1, 1) AS Initial
FROM dbo.DimEmployee
WHERE LastName LIKE 'Bar%'
ORDER BY LastName;
Oto zestaw wyników.
LastName Initial
-------------------- -------
Barbariol A
Barber D
Barreto de Mattos P
W poniższym przykładzie pokazano, jak zwrócić drugi, trzeci i czwarty znak stałej abcdef
ciągu .
USE ssawPDW;
SELECT TOP 1 SUBSTRING('abcdef', 2, 3) AS x
FROM dbo.DimCustomer;
Oto zestaw wyników.
x
-----
bcd
D. Używanie ciągu SUBSTRING z argumentem NULL
length
SELECT SUBSTRING('123abc', 4, NULL) AS [NULL length];
Oto zestaw wyników.
NULL length
-----------
NULL
E. Używanie ciągu SUBSTRING z opcjonalnym argumentem długości
Dotyczy: Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, Analytics Platform System (PDW) i Punkt końcowy analizy SQL w usłudze Microsoft Fabric
W poniższym przykładzie pokazano, jak zwrócić tylko część ciągu znaku z danej pozycji początkowej. Ponieważ argument długości nie jest podany, długość domyślna zwraca pozostałe znaki w ciągu.
SELECT SUBSTRING('123abc', 4) AS y;
Oto zestaw wyników.
y
-----
abc
F. Użyj argumentu SUBSTRING bez argumentu długości, aby znaleźć części zastępcze w spisie AdventureWorks2022
USE AdventureWorks2022;
GO
SELECT [ProductDescriptionID],
[Description],
SUBSTRING([Description], LEN('Replacement') + 1) AS [Replacement-Part]
FROM [Production].[ProductDescription]
WHERE [Description] LIKE 'Replacement%';
Oto zestaw wyników.
Identyfikator productDescriptionID | Opis | Replacement-Part |
---|---|---|
686 | Wymiana koła górskiego dla zawodnika najwyższego poziomu. | koło górskie dla zawodnika na poziomie podstawowym. |
687 | Zastąp koło górskie dla niechcenia poważnym jeźdźcem. | koło górskie dla swobody dla poważnego jeźdźca. |
689 | Wymiana przedniego koła drogowego dla rowerzystów na poziomie wejścia. | z przodu koła drogowego dla rowerzystów na poziomie wejścia. |
867 | Wymiana tylnego koła górskiego dla zawodnika na poziomie wejścia. | tylne koło górskie dla zawodnika na poziomie podstawowym. |
868 | Zastąp tylne koło górskie dla niechcenia poważnego jeźdźca. | tylne koło górskie dla swobody dla poważnego jeźdźca. |
870 | Wymiana tylnego koła dla rowerzystów na poziomie wejścia. | tylne koło dla rowerzystów na poziomie wejścia. |
1981 | Wymiana koła górskiego dla zawodnika najwyższego poziomu. | koło górskie dla zawodnika na poziomie podstawowym. |
1987 | Zastąp koło górskie dla niechcenia poważnym jeźdźcem. | koło górskie dla swobody dla poważnego jeźdźca. |
1999 | Wymiana tylnego koła drogowego dla rowerzystów na poziomie wejścia. | tylne koło drogowe dla rowerzystów na poziomie wejścia. |