Bagikan melalui


SUBSTRING (Transact-SQL)

Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric

Menghasilkan bagian dari karakter, biner, teks, atau ekspresi gambar di SQL Server.

Konvensi sintaks transact-SQL

Sintaks

SUBSTRING ( expression, start, length )  

Argumen

expression
Adalah karakter, biner, teks, ntext, atau ekspresi gambar.

mulai
Adalah ekspresi bilangan bulat atau besar yang menentukan di mana karakter yang dikembalikan dimulai. (Penomoran berbasis 1, yang berarti bahwa karakter pertama dalam ekspresi adalah 1). Jika awal kurang dari 1, ekspresi yang dikembalikan akan dimulai pada karakter pertama yang ditentukan dalam ekspresi. Dalam hal ini, jumlah karakter yang dikembalikan adalah nilai terbesar dari jumlah panjang mulai + - 1 atau 0. Jika awal lebih besar dari jumlah karakter dalam ekspresi nilai, ekspresi panjang nol dikembalikan.

length
Adalah bilangan bulat positif atau ekspresi besar yang menentukan berapa banyak karakter ekspresi yang akan dikembalikan. Jika panjangnya negatif, kesalahan dihasilkan dan pernyataan dihentikan. Jika jumlah awal dan panjang lebih besar dari jumlah karakter dalam ekspresi, seluruh ekspresi nilai yang dimulai pada awalnya dikembalikan.

Jenis Kembalian

Mengembalikan data karakter jika ekspresi adalah salah satu jenis data karakter yang didukung. Mengembalikan data biner jika ekspresi adalah salah satu jenis data biner yang didukung. String yang dikembalikan adalah jenis yang sama dengan ekspresi yang ditentukan dengan pengecualian yang diperlihatkan dalam tabel.

Ekspresi yang ditentukan Tipe hasil
teks char/varchar/ varchar
nchar/nvarchar/ntext nvarchar
gambar varbinary biner// varbinary

Keterangan

Nilai untuk mulai dan panjang harus ditentukan dalam jumlah karakter untuk jenis data ntext, char, atau varchar dan byte untuk tipe data teks, gambar, biner, atau varbinary.

Ekspresi harus varchar(max) atau varbinary(max) ketika awal atau panjang berisi nilai yang lebih besar dari 2147483647.

Karakter Tambahan (Pasangan Pengganti)

Saat menggunakan kolase karakter tambahan (SC), baik mulai maupun panjang menghitung setiap pasangan pengganti dalam ekspresi sebagai satu karakter. Untuk informasi selengkapnya, lihat Dukungan Kolate dan Unicode.

Contoh

J. Menggunakan SUBSTRING dengan string karakter

Contoh berikut menunjukkan cara mengembalikan hanya sebagian dari string karakter. sys.databases Dari tabel, kueri ini mengembalikan nama database sistem di kolom pertama, huruf pertama database di kolom kedua, dan karakter ketiga dan keempat di kolom akhir.

SELECT name, SUBSTRING(name, 1, 1) AS Initial ,
SUBSTRING(name, 3, 2) AS ThirdAndFourthCharacters
FROM sys.databases  
WHERE database_id < 5;   

Berikut set hasilnya.

nama Awal ThirdAndFourthCharacters
master m st
tempdb t mp
model m de
msdb m db

Berikut adalah cara menampilkan karakter kedua, ketiga, dan keempat dari konstanta abcdefstring .

SELECT x = SUBSTRING('abcdef', 2, 3);  

Berikut set hasilnya.

x  
----------  
bcd  
 
(1 row(s) affected)

B. Menggunakan SUBSTRING dengan data teks, ntext, dan gambar

Catatan

Untuk menjalankan contoh berikut, Anda harus menginstal database pub .

Contoh berikut menunjukkan cara mengembalikan 10 karakter pertama dari setiap kolom data teks dan gambar dalam pub_info tabel pubs database. data teks dikembalikan sebagai varchar, dan data gambar dikembalikan sebagai 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';  

Berikut set hasilnya.

pub_id logo    pr_info
------ ---------------------- ----------
1756   0x474946383961E3002500 This is sa

(1 row(s) affected)

Contoh berikut menunjukkan efek SUBSTRING pada data teks dan ntext . Pertama, contoh ini membuat tabel baru dalam pubs database bernama npub_info. Kedua, contoh membuat pr_info kolom dalam npub_info tabel dari 80 karakter pub_info.pr_info pertama kolom dan menambahkan ü sebagai karakter pertama. Terakhir, mengambil INNER JOIN semua nomor identifikasi penerbit dan SUBSTRING kolom informasi penerbit teks dan ntext .

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;  

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Menggunakan SUBSTRING dengan string karakter

Contoh berikut menunjukkan cara mengembalikan hanya sebagian dari string karakter. dbo.DimEmployee Dari tabel, kueri ini mengembalikan nama belakang dalam satu kolom hanya dengan awal pertama di kolom kedua.

-- Uses AdventureWorks  
  
SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial  
FROM dbo.DimEmployee  
WHERE LastName LIKE 'Bar%'  
ORDER BY LastName;  

Berikut set hasilnya.

LastName             Initial
-------------------- -------
Barbariol            A
Barber               D
Barreto de Mattos    P

Contoh berikut menunjukkan cara mengembalikan karakter kedua, ketiga, dan keempat dari konstanta abcdefstring .

USE ssawPDW;  
  
SELECT TOP 1 SUBSTRING('abcdef', 2, 3) AS x FROM dbo.DimCustomer;  

Berikut set hasilnya.

x
-----
bcd

Lihat Juga

KIRI (T-SQL)
LTRIM (Transact-SQL)
KANAN (T-SQL)
RTRIM (T-SQL)
STRING_SPLIT (T-SQL)
TRIM (Transact-SQL)
Fungsi String (Transact-SQL)