Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
Microsoft Fabric
Warehouse'da SQL analiz uç noktası
SQL Server'da karakter, ikili, metin veya görüntü ifadesinin bir bölümünü döndürür.
Transact-SQL söz dizimi kuralları
Sözdizimi
SQL Server için söz dizimi.
SUBSTRING ( expression , start , length )
Microsoft Fabric'te Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Azure Synapse Analytics, Analiz Platformu Sistemi (PDW) ve Ambar ve SQL analiz uç noktası için söz dizimi.
SUBSTRING ( expression , start [ , length ] )
Tartışmalar
ifade
Karakter, ikili, metin, ntext veya görüntüifadesi.
başlangıç
Döndürülen karakterlerin nereden başlayacağını belirten bir tamsayı veya bigint ifadesi. (Numaralandırma 1 tabanlıdır, yani ifadedeki ilk karakter 1'dir). Başlangıç 1'den küçükse, döndürülen ifade ifadede belirtilen ilk karakterde başlar. Bu durumda, döndürülen karakter sayısı başlangıç + uzunluğu toplamının en büyük değeridir - 1 veya 0. Başlangıç değeri değer ifadesindeki karakter sayısından büyükse, sıfır uzunluklu bir ifade döndürülür.
uzunluk
İfadenin kaç karakterinin döndürüldüğünü belirten pozitif bir tamsayı veya bigintifadesi . Uzunluk negatifse bir hata oluşturulur ve deyimi sonlandırılır. Başlangıç ve uzunluk toplamı ifadedeki karakter sayısından büyükse, başlangıçtan itibaren tüm değer ifadesi döndürülür. Uzunluk belirtilmezse, başlangıç konumundan ifadenin sonuna kadar olan tüm karakterler döndürülür.
Alt dizeyi Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Azure Synapse Analytics, Analiz Platformu Sistemi (PDW) ve Microsoft Fabric'teki Ambar ve SQL analiz uç noktasında isteğe bağlı uzunluk bağımsız değişkeniyle kullanabilirsiniz. AncakNULL
için kullanırsanız döndürür SUBSTRING
NULL
.
E.'yi gözden geçirin. Bir örnek için isteğe bağlı uzunluk bağımsız değişkeniyle ALTSTRING kullanın.
Dönüş türleri
İfade desteklenen karakter veri türlerinden biriyse karakter verilerini döndürür. İfade desteklenen ikili veri türlerinden biriyse ikili verileri döndürür. Döndürülen dize, tabloda gösterilen özel durumlarla belirtilen ifadeyle aynı türdedir.
Belirtilen ifade | Dönüş türü |
---|---|
Char / varchar / Metin | varchar |
nchar / (İngilizce)Nvarchar / Belediyesintext | nvarchar |
ikili / varbinary / resim | varbinary |
Açıklamalar
Başlangıç ve uzunluk değerleri ntext, char veya varchar veri türleri için karakter sayısı ve metin, görüntü, ikili veya varbinary veri türleri için bayt cinsinden belirtilmelidir.
Başlangıç veya uzunluk 2.147.483.647'den büyük bir değer içerdiğinde ifadevarchar(max) veya varbinary(max) olmalıdır.
Ek karakterler (vekil çiftler)
Tamamlayıcı karakter (SC) harmanlamaları kullandığınızda, hem başlangıç hem de uzunlukifadedeki her vekil çifti tek bir karakter olarak sayar. Daha fazla bilgi için bkz. Harmanlama ve Unicode desteği.
Örnekler
A. Karakter dizesi ile ALT DIZE kullanma
Aşağıdaki örnekte, bir karakter dizesinin yalnızca bir bölümünün nasıl döndürüleceği gösterilmektedir. Tablodan sys.databases
, bu sorgu ilk sütundaki sistem veritabanı adlarını, ikinci sütundaki veritabanının ilk harfini ve son sütundaki üçüncü ve dördüncü karakterleri döndürür.
SELECT name,
SUBSTRING(name, 1, 1) AS Initial,
SUBSTRING(name, 3, 2) AS ThirdAndFourthCharacters
FROM sys.databases
WHERE database_id < 5;
Sonuç kümesi aşağıdadır.
isim | İlk | Üçüncü ve Dördüncü Karakterler |
---|---|---|
master |
m |
st |
tempdb |
t |
mp |
model |
m |
de |
msdb |
m |
db |
Dize sabitinin abcdef
ikinci, üçüncü ve dördüncü karakterlerini görüntülemek için aşağıdaki sorguyu kullanın.
SELECT SUBSTRING('abcdef', 2, 3) AS x;
Sonuç kümesi aşağıdadır.
x
----------
bcd
B. Metin, ntext ve görüntü verileriyle SUBSTRING kullanma
Uyarı
Aşağıdaki örnekleri çalıştırmak için pubs veritabanını yüklemeniz gerekir.
Aşağıdaki örnekte, veritabanı tablosundaki bir metin ve görüntü veri sütununun pub_info
her birinden ilk 10 karakterin nasıl döndürüleceği pubs
gösterilmektedir.
metin verileri varchar olarak, görüntü verileri ise varbinary olarak döndürülür.
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';
Sonuç kümesi aşağıdadır.
pub_id logo pr_info
------ ---------------------- ----------
1756 0x474946383961E3002500 This is sa
Aşağıdaki örnekte, SUBSTRING
hem de ntext verileri üzerindeki etkisi gösterilmektedir. İlk olarak, bu örnek veritabanında adlı pubs
yeni bir tablo npub_info
oluşturur. İkinci olarak örnek, tabloda sütunun pr_info
ilk 80 karakterinden npub_info
sütun oluşturur pub_info.pr_info
ve ilk karakter olarak bir ü
ekler. Son olarak, bir INNER JOIN
tüm yayımcı tanımlama numaralarını ve SUBSTRING
hem metin hem de ntext yayımcı bilgileri sütunlarını alır.
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;
Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)
C. Karakter dizesi ile ALT DIZE kullanma
Aşağıdaki örnekte, bir karakter dizesinin yalnızca bir bölümünün nasıl döndürüleceği gösterilmektedir. Tablodan dbo.DimEmployee
, bu sorgu bir sütunda aile adını döndürür ve ikinci sütunda yalnızca ilk baş harfleri bulunur.
-- Uses AdventureWorks
SELECT LastName,
SUBSTRING(FirstName, 1, 1) AS Initial
FROM dbo.DimEmployee
WHERE LastName LIKE 'Bar%'
ORDER BY LastName;
Sonuç kümesi aşağıdadır.
LastName Initial
-------------------- -------
Barbariol A
Barber D
Barreto de Mattos P
Aşağıdaki örnekte, dize sabitinin abcdef
ikinci, üçüncü ve dördüncü karakterlerinin nasıl döndürüleceği gösterilmektedir.
USE ssawPDW;
SELECT TOP 1 SUBSTRING('abcdef', 2, 3) AS x
FROM dbo.DimCustomer;
Sonuç kümesi aşağıdadır.
x
-----
bcd
D. SubSTRING'i uzunluk bağımsız değişkeniyle NULL
kullanma
SELECT SUBSTRING('123abc', 4, NULL) AS [NULL length];
Sonuç kümesi aşağıdadır.
NULL length
-----------
NULL
E. İsteğe bağlı uzunluk bağımsız değişkeniyle ALT DIZE kullanma
Şunlar için geçerlidir: Microsoft Fabric'te Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Azure Synapse Analytics, Analiz Platformu Sistemi (PDW) ve Ambar ve SQL analiz uç noktası
Aşağıdaki örnekte, belirli bir başlangıç konumundan karakter dizesinin yalnızca bir kısmının nasıl döndürüleceği gösterilmektedir. Uzunluk bağımsız değişkeni sağlanmadığından, dizedeki kalan karakterleri döndürmek için uzunluk varsayılandır.
SELECT SUBSTRING('123abc', 4) AS y;
Sonuç kümesi aşağıdadır.
y
-----
abc
F. AdventureWorks2022 envanterindeki yedek parçaları bulmak için uzunluk bağımsız değişkeni olmadan SUBSTRING kullanma
USE AdventureWorks2022;
GO
SELECT [ProductDescriptionID],
[Description],
SUBSTRING([Description], LEN('Replacement') + 1) AS [Replacement-Part]
FROM [Production].[ProductDescription]
WHERE [Description] LIKE 'Replacement%';
Sonuç kümesi aşağıdadır.
ProductDescriptionID (ÜrünAçıklama Kimliği) | Açıklama | Replacement-Part |
---|---|---|
686 | Giriş seviyesi binici için yedek dağ tekerleği. | giriş seviyesi binici için dağ tekerleği. |
687 | Sıradan ve ciddi binici için yedek dağ tekerleği. | sıradan ve ciddi binici için dağ tekerleği. |
689 | Giriş seviyesi bisikletçi için yedek yol ön tekerleği. | giriş seviyesi bisikletçi için yol ön tekerleği. |
867 | Giriş seviyesi binici için yedek arka dağ tekerleği. | giriş seviyesi sürücü için arka dağ tekerleği. |
868 | Normal ve ciddi binici için yedek arka dağ tekerleği. | normal ve ciddi binici için arka dağ tekerleği. |
870 | Giriş seviyesi bisikletçi için yedek arka tekerlek. | giriş seviyesi bisikletçi için arka tekerlek. |
1981 | Giriş seviyesi binici için yedek dağ tekerleği. | giriş seviyesi binici için dağ tekerleği. |
1987 | Sıradan ve ciddi binici için yedek dağ tekerleği. | sıradan ve ciddi binici için dağ tekerleği. |
1999 | Giriş seviyesi bisikletçi için yedek yol arka tekerleği. | giriş seviyesi bisikletçi için yol arka tekerleği. |