Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistem Platform Analitik (PDW)
Titik akhir analitik SQL di Microsoft Fabric
Gudang di Microsoft Fabric
Database SQL di Microsoft Fabric
Menghasilkan bagian dari karakter, biner, teks, atau ekspresi gambar di SQL Server.
Sintaks
Sintaks untuk SQL Server.
SUBSTRING ( expression , start [ , length ] )
Argumen
ekspresi
Karakter, biner, teks, ntext, atau ekspresigambar.
mulai
Ekspresi bilangan bulat atau bigint 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 dimulai pada karakter pertama yang ditentukan dalam ekspresi. Dalam hal ini, jumlah karakter yang dikembalikan adalah nilai terbesar dari jumlahpanjang + - 1, atau 0. Jika awal lebih besar dari jumlah karakter dalam ekspresi nilai, ekspresi panjang nol dikembalikan.
panjangnya
Bilangan bulat positif atau ekspresi bigint yang menentukan berapa banyak karakter ekspresi yang 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. Jika panjang dihilangkan, semua karakter dari posisi awal hingga akhir ekspresi dikembalikan.
Anda dapat menggunakan substring dengan argumen panjang opsional . Namun, jika Anda menggunakan NULL untuk panjang,SUBSTRING mengembalikan NULL. Tinjau E. Gunakan SUBSTRING dengan argumen panjang opsional misalnya.
Tipe pengembalian
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 / nteks | nvarchar |
| gambar varbinary biner / / | varbiner |
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 2.147.483.647.
Karakter tambahan (pasangan pengganti)
Saat Anda menggunakan kolase karakter tambahan (SC), baik awal maupun panjang menghitung setiap pasangan pengganti dalam ekspresi sebagai satu karakter. Untuk informasi selengkapnya, lihat Dukungan Pengurutan 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 | Karakter Ketiga dan Keempat |
|---|---|---|
master |
m |
st |
tempdb |
t |
mp |
model |
m |
de |
msdb |
m |
db |
Untuk menampilkan karakter kedua, ketiga, dan keempat dari konstanta abcdefstring , gunakan kueri berikut.
SELECT SUBSTRING('abcdef', 2, 3) AS x;
Berikut set hasilnya.
x
----------
bcd
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;
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';
Berikut set hasilnya.
pub_id logo pr_info
------ ---------------------- ----------
1756 0x474946383961E3002500 This is sa
Contoh berikut menunjukkan efek SUBSTRING pada data teks dan teks . 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 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;
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 keluarga 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
D. Menggunakan SUBSTRING dengan NULL argumen panjang
SELECT SUBSTRING('123abc', 4, NULL) AS [NULL length];
Berikut set hasilnya.
NULL length
-----------
NULL
E. Menggunakan SUBSTRING dengan argumen panjang opsional
Berlaku untuk: Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, Analytics Platform System (PDW), dan titik akhir analitik Gudang dan SQL di Microsoft Fabric
Contoh berikut menunjukkan cara mengembalikan hanya sebagian string karakter dari posisi awal tertentu. Karena argumen panjang tidak disediakan, panjangnya default untuk mengembalikan karakter yang tersisa dalam string.
SELECT SUBSTRING('123abc', 4) AS y;
Berikut set hasilnya.
y
-----
abc
F. Gunakan SUBSTRING tanpa argumen panjang untuk menemukan komponen pengganti dalam inventaris AdventureWorks2022
USE AdventureWorks2022;
GO
SELECT [ProductDescriptionID],
[Description],
SUBSTRING([Description], LEN('Replacement') + 1) AS [Replacement-Part]
FROM [Production].[ProductDescription]
WHERE [Description] LIKE 'Replacement%';
Berikut set hasilnya.
| Deskripsi Produk ID | Deskripsi | Replacement-Part |
|---|---|---|
| 686 | Penggantian roda gunung untuk pengendara tingkat pemula. | roda gunung untuk pengendara tingkat pemula. |
| 687 | Penggantian roda gunung untuk pengendara yang santai hingga serius. | roda gunung untuk pengendara yang santai hingga serius. |
| 689 | Penggantian roda depan jalan untuk pengendara sepeda tingkat pemula. | roda depan jalan untuk pengendara sepeda tingkat pemula. |
| 867 | Penggantian roda gunung belakang untuk pengendara tingkat pemula. | roda gunung belakang untuk pengendara tingkat pemula. |
| 868 | Penggantian roda gunung belakang untuk pengendara yang santai hingga serius. | roda gunung belakang untuk pengendara yang santai hingga serius. |
| 870 | Roda belakang pengganti untuk pengendara sepeda tingkat pemula. | roda belakang untuk pengendara sepeda tingkat pemula. |
| 1981 | Penggantian roda gunung untuk pengendara tingkat pemula. | roda gunung untuk pengendara tingkat pemula. |
| 1987 | Penggantian roda gunung untuk pengendara yang santai hingga serius. | roda gunung untuk pengendara yang santai hingga serius. |
| 1999 | Penggantian roda belakang jalan untuk pengendara sepeda tingkat pemula. | roda belakang jalan untuk pengendara sepeda tingkat pemula. |