Megosztás a következőn keresztül:


RÉSZKARAKTERLÁNC (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics platformrendszer (PDW)SQL-elemzési végpont a Microsoft FabricA 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 NULLvissza. 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ó abcdefmá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_infopubs . 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_infoadatbázisban. Másodszor, a példa létrehozza a pr_infonpub_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ó abcdefmá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.