Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics platformrendszer (PDW)
SQL-elemzési végpont a Microsoft Fabric
A Microsoft Fabric Warehouse-ban
Egy karakter, bináris, szöveg vagy képkifejezés egy részét adja vissza az SQL Serverben.
Transact-SQL szintaxis konvenciók
Szemantika
Az SQL Server szintaxisa.
SUBSTRING ( expression , start , length )
Szintaxis az Azure SQL Database, a felügyelt Azure SQL-példány, az Azure Synapse Analytics, az Analytics Platform System (PDW) és a Warehouse és az SQL Analytics végponthoz a Microsoft Fabricben.
SUBSTRING ( expression , start [ , length ] )
Érvek
kifejezés
Karakter, bináris, szöveg, ntext vagy képkifejezés.
indítása
Egész szám vagy bigint kifejezés, amely meghatározza, hogy hol kezdődnek a visszaadott karakterek. (A számozás 1 alapú, ami azt jelenti, hogy a kifejezés első karaktere 1). Ha a kezdés kisebb, mint 1, a visszaadott kifejezés a kifejezésben megadott első karakternél kezdődik. Ebben az esetben a visszaadott karakterek száma a legnagyobb érték a kezdő + hossz összege – 1 vagy 0. Ha a kezdés nagyobb, mint az értékkifejezésben szereplő karakterek száma, a függvény nulla hosszúságú kifejezést ad vissza.
hossz
Pozitív egész vagy bigint kifejezés, amely meghatározza, hogy hány karaktert ad vissza a rendszer . Ha a hossz negatív, hiba jön létre, és az utasítás leáll. Ha a kezdés és a hossz összege nagyobb, mint a kifejezésben szereplő karakterek száma, a függvény az elejétől kezdődő teljes értékkifejezést adja vissza. Ha a hossz nincs megadva, a függvény a kezdő pozíciótól a kifejezés végéig minden karaktert visszaad.
Az azure SQL Database, az Azure SQL Managed Instance, az Azure Synapse Analytics, az Analytics Platform System (PDW) és a Warehouse és az SQL Analytics végpontja a Microsoft Fabricben használható egy opcionális hosszargumentummal. Ha azonban NULL
használja, SUBSTRING
a visszaadott értéket adja NULL
vissza.
Tekintse át az E lehetőséget. Használja a SUBSTRING függvényt egy példa opcionális hosszargumentumával.
Visszatérési típusok
Karakteradatokat ad vissza, ha a kifejezés az egyik támogatott karakter adattípus. Bináris adatokat ad vissza, ha a kifejezés a támogatott bináris adattípusok egyike. A visszaadott sztring ugyanaz a típus, mint a megadott kifejezés, a táblázatban látható kivételekkel.
Megadott kifejezés | Visszatérési típus |
---|---|
bejárónő / varchar / SMS | varchar |
NCHAR / Nvarchar / ntext | nvarchar |
bináris / varbinary / kép | varbináris |
Megjegyzések
Az indítási és hosszúsági értékeket meg kell adni az ntext, a karakter vagy a varchar adattípus karaktereinek számában, valamint a szöveg, kép, bináris vagy varbináris adattípusok bájtjainak számában.
A kifejezésnekvarchar(max) vagy varbinary(max) értéknek kell lennie, ha a kezdő vagy a hossz 2 147 483 647-nél nagyobb értéket tartalmaz.
Kiegészítő karakterek (helyettesítő párok)
Ha kiegészítő karakter (SC) rendezéseket használ, a kezdő és a hossz is egyetlen karakterként számlálja meg a kifejezésben szereplő helyettesítő párokat. További információ: összehasonlítási szabályok és Unicode-támogatás.
Példák
Egy. SUBSTRING használata karaktersztringgel
Az alábbi példa bemutatja, hogyan lehet visszaadni egy karaktersztringnek csak egy részét. A táblából ez a sys.databases
lekérdezés az első oszlop rendszeradatbázisneveit, a második oszlopban az adatbázis első betűjét, az utolsó oszlop harmadik és negyedik karakterét adja vissza.
SELECT name,
SUBSTRING(name, 1, 1) AS Initial,
SUBSTRING(name, 3, 2) AS ThirdAndFourthCharacters
FROM sys.databases
WHERE database_id < 5;
Itt van az eredmények összessége.
név | Kezdeti | Harmadik és negyedikKarakterek |
---|---|---|
master |
m |
st |
tempdb |
t |
mp |
model |
m |
de |
msdb |
m |
db |
A sztringállandó abcdef
második, harmadik és negyedik karakterének megjelenítéséhez használja az alábbi lekérdezést.
SELECT SUBSTRING('abcdef', 2, 3) AS x;
Itt van az eredmények összessége.
x
----------
bcd
B. A SUBSTRING használata szöveg-, ntext- és képadatokkal
Megjegyzés:
Az alábbi példák futtatásához telepítenie kell a pubok adatbázisát.
Az alábbi példa bemutatja, hogyan lehet visszaadni az első 10 karaktert az adatbázis táblázatának minden szöveg - és képadatoszlopábólpub_info
pubs
.
a rendszervarcharként adja vissza a szöveges adatokat, a rendszer pedig varbinárisként adja vissza a képadatokat.
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';
Itt van az eredmények összessége.
pub_id logo pr_info
------ ---------------------- ----------
1756 0x474946383961E3002500 This is sa
Az alábbi példa a SUBSTRING
és az ntext adatokra gyakorolt hatását mutatja be. Ez a példa először létrehoz egy új táblát a pubs
névvel ellátott npub_info
adatbázisban. Másodszor, a példa létrehozza a pr_info
npub_info
táblázat oszlopát az oszlop első 80 karakteréből pub_info.pr_info
, és hozzáad egy ü
karaktert első karakterként. Végül lekéri INNER JOIN
az összes közzétevő-azonosító számot, valamint a SUBSTRING
és az ntext-közzétevő információs oszlopait is.
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;
Példák: Azure Synapse Analytics and Analytics Platform System (PDW)
C. SUBSTRING használata karaktersztringgel
Az alábbi példa bemutatja, hogyan lehet visszaadni egy karaktersztringnek csak egy részét. A táblából ez a dbo.DimEmployee
lekérdezés az egyik oszlop családnevét adja vissza, a második oszlopban csak az első monogramot.
-- Uses AdventureWorks
SELECT LastName,
SUBSTRING(FirstName, 1, 1) AS Initial
FROM dbo.DimEmployee
WHERE LastName LIKE 'Bar%'
ORDER BY LastName;
Itt van az eredmények összessége.
LastName Initial
-------------------- -------
Barbariol A
Barber D
Barreto de Mattos P
Az alábbi példa bemutatja, hogyan adja vissza a sztringállandó abcdef
második, harmadik és negyedik karakterét.
USE ssawPDW;
SELECT TOP 1 SUBSTRING('abcdef', 2, 3) AS x
FROM dbo.DimCustomer;
Itt van az eredmények összessége.
x
-----
bcd
D. SUBSTRING használata hosszargumentummal NULL
SELECT SUBSTRING('123abc', 4, NULL) AS [NULL length];
Itt van az eredmények összessége.
NULL length
-----------
NULL
E. SUBSTRING használata opcionális hosszargumentummal
A következőkre vonatkozik: Azure SQL Database, felügyelt Azure SQL-példány, Azure Synapse Analytics, Elemzési platformrendszer (PDW) és Warehouse és SQL Analytics-végpont a Microsoft Fabricben
Az alábbi példa bemutatja, hogyan adhat vissza egy karaktersztringnek csak egy részét egy adott kezdő pozícióból. Mivel a hossz argumentum nincs megadva, a hossz alapértelmezés szerint a sztring többi karakterét adja vissza.
SELECT SUBSTRING('123abc', 4) AS y;
Itt van az eredmények összessége.
y
-----
abc
F. A SUBSTRING használata hosszargumentum nélkül helyettesítő alkatrészek megkereséséhez az AdventureWorks2022 leltárban
USE AdventureWorks2022;
GO
SELECT [ProductDescriptionID],
[Description],
SUBSTRING([Description], LEN('Replacement') + 1) AS [Replacement-Part]
FROM [Production].[ProductDescription]
WHERE [Description] LIKE 'Replacement%';
Itt van az eredmények összessége.
Termékleírás azonosítója | Leírás | Replacement-Part |
---|---|---|
686 | Csere mountain wheel a belépő szintű lovas. | hegyi kerék belépő szintű motorosok számára. |
687 | Csere mountain wheel az alkalmi, hogy komoly lovas. | hegyi kerék az alkalmi és a komoly motorosok számára. |
689 | Csere közúti első kerék a belépő szintű kerékpáros. | közúti első kerék a belépő szintű kerékpáros számára. |
867 | Csere hátsó hegyi kerék a belépő szintű lovas. | hátsó hegyi kerék a belépő szintű lovas számára. |
868 | Csere hátsó hegyi kerék az alkalmi, hogy komoly lovas. | hátsó hegyi kerék az alkalmi, hogy komoly lovas. |
870 | Csere hátsó kerék a belépő szintű kerékpáros számára. | hátsó kerék a belépő szintű kerékpáros számára. |
1981 | Csere mountain wheel a belépő szintű lovas. | hegyi kerék belépő szintű motorosok számára. |
1987 | Csere mountain wheel az alkalmi, hogy komoly lovas. | hegyi kerék az alkalmi és a komoly motorosok számára. |
1999 | Csere közúti hátsó kerék a belépő szintű kerékpáros számára. | közúti hátsó kerék a belépő szintű kerékpáros számára. |