Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Fungsi SUBSTRING

Mode fokus
Fungsi SUBSTRING - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengembalikan subset dari string berdasarkan posisi awal yang ditentukan.

Jika input adalah string karakter, posisi awal dan jumlah karakter yang diekstraksi didasarkan pada karakter, bukan byte, sehingga karakter multi-byte dihitung sebagai karakter tunggal. Jika input adalah ekspresi biner, posisi awal dan substring yang diekstraksi didasarkan pada byte. Anda tidak dapat menentukan panjang negatif, tetapi Anda dapat menentukan posisi awal negatif.

Sintaksis

SUBSTRING(character_string FROM start_position [ FOR number_characters ] )
SUBSTRING(character_string, start_position, number_characters )
SUBSTRING(binary_expression, start_byte, number_bytes )
SUBSTRING(binary_expression, start_byte )

Argumen

character_string

String yang akan dicari. Tipe data non-karakter diperlakukan seperti string.

start_position

Posisi dalam string untuk memulai ekstraksi, mulai dari 1. Start_position didasarkan pada jumlah karakter, bukan byte, sehingga karakter multi-byte dihitung sebagai karakter tunggal. Angka ini bisa negatif.

number_characters

Jumlah karakter yang akan diekstrak (panjang substring). Number_characters didasarkan pada jumlah karakter, bukan byte, sehingga karakter multi-byte dihitung sebagai karakter tunggal. Angka ini tidak bisa negatif.

binary_expression

Binary_expression dari tipe data VARBYTE yang akan dicari.

start_byte

Posisi dalam ekspresi biner untuk memulai ekstraksi, mulai dari 1. Angka ini bisa negatif.

number_bytes

Jumlah byte untuk mengekstrak, yaitu, panjang substring. Angka ini tidak bisa negatif.

Jenis pengembalian

VARCHAR atau VARBYTE tergantung pada input.

Catatan Penggunaan

Berikut adalah beberapa contoh bagaimana Anda dapat menggunakan start_position dan number_characters untuk mengekstrak substring dari berbagai posisi dalam string.

Contoh berikut mengembalikan string empat karakter yang dimulai dengan karakter keenam.

select substring('caterpillar',6,4); substring ----------- pill (1 row)

Jika start_position + number_characters melebihi panjang string, SUBSTRING mengembalikan substring mulai dari start_position hingga akhir string. Misalnya:

select substring('caterpillar',6,8); substring ----------- pillar (1 row)

Jika negatif atau 0, fungsi SUBSTRING mengembalikan substring yang dimulai pada karakter pertama string dengan panjang start_position number_characters +-1. start_position Misalnya:

select substring('caterpillar',-2,6); substring ----------- cat (1 row)

Jika start_position + number_characters -1 kurang dari atau sama dengan nol, SUBSTRING mengembalikan string kosong. Misalnya:

select substring('caterpillar',-5,4); substring ----------- (1 row)

Contoh

Contoh berikut mengembalikan bulan dari string LISTTIME dalam tabel LISTING:

select listid, listtime, substring(listtime, 6, 2) as month from listing order by 1, 2, 3 limit 10; listid | listtime | month --------+---------------------+------- 1 | 2008-01-24 06:43:29 | 01 2 | 2008-03-05 12:25:29 | 03 3 | 2008-11-01 07:35:33 | 11 4 | 2008-05-24 01:18:37 | 05 5 | 2008-05-17 02:29:11 | 05 6 | 2008-08-15 02:08:13 | 08 7 | 2008-11-15 09:38:15 | 11 8 | 2008-11-09 05:07:30 | 11 9 | 2008-09-09 08:03:36 | 09 10 | 2008-06-17 09:44:54 | 06 (10 rows)

Contoh berikut sama seperti di atas, tetapi menggunakan opsi FROM... FOR:

select listid, listtime, substring(listtime from 6 for 2) as month from listing order by 1, 2, 3 limit 10; listid | listtime | month --------+---------------------+------- 1 | 2008-01-24 06:43:29 | 01 2 | 2008-03-05 12:25:29 | 03 3 | 2008-11-01 07:35:33 | 11 4 | 2008-05-24 01:18:37 | 05 5 | 2008-05-17 02:29:11 | 05 6 | 2008-08-15 02:08:13 | 08 7 | 2008-11-15 09:38:15 | 11 8 | 2008-11-09 05:07:30 | 11 9 | 2008-09-09 08:03:36 | 09 10 | 2008-06-17 09:44:54 | 06 (10 rows)

Anda tidak dapat menggunakan SUBSTRING untuk mengekstrak awalan string yang mungkin berisi karakter multi-byte karena Anda perlu menentukan panjang string multi-byte berdasarkan jumlah byte, bukan jumlah karakter. Untuk mengekstrak segmen awal string berdasarkan panjang dalam byte, Anda dapat CAST string sebagai VARCHAR (byte_length) untuk memotong string, di mana byte_length adalah panjang yang diperlukan. Contoh berikut mengekstrak 5 byte pertama dari string'Fourscore and seven'.

select cast('Fourscore and seven' as varchar(5)); varchar ------- Fours

Contoh berikut menunjukkan posisi awal negatif dari nilai binerabc. Karena posisi awal adalah -3, substring diekstraksi dari awal nilai biner. Hasilnya secara otomatis ditampilkan sebagai representasi heksadesimal dari substring biner.

select substring('abc'::varbyte, -3); substring ----------- 616263

Contoh berikut menunjukkan 1 untuk posisi awal dari nilai binerabc. Karena karena tidak ada panjang yang ditentukan, string diekstraksi dari posisi awal hingga akhir string. Hasilnya secara otomatis ditampilkan sebagai representasi heksadesimal dari substring biner.

select substring('abc'::varbyte, 1); substring ----------- 616263

Contoh berikut menunjukkan 3 untuk posisi awal dari nilai binerabc. Karena karena tidak ada panjang yang ditentukan, string diekstraksi dari posisi awal hingga akhir string. Hasilnya secara otomatis ditampilkan sebagai representasi heksadesimal dari substring biner.

select substring('abc'::varbyte, 3); substring ----------- 63

Contoh berikut menunjukkan 2 untuk posisi awal dari nilai binerabc. String diekstraksi dari posisi awal ke posisi 10, tetapi ujung string berada pada posisi 3. Hasilnya secara otomatis ditampilkan sebagai representasi heksadesimal dari substring biner.

select substring('abc'::varbyte, 2, 10); substring ----------- 6263

Contoh berikut menunjukkan 2 untuk posisi awal dari nilai binerabc. String diekstraksi dari posisi awal untuk 1 byte. Hasilnya secara otomatis ditampilkan sebagai representasi heksadesimal dari substring biner.

select substring('abc'::varbyte, 2, 1); substring ----------- 62

Contoh berikut mengembalikan nama depan Ana yang muncul setelah spasi terakhir dalam string inputSilva, Ana.

select reverse(substring(reverse('Silva, Ana'), 1, position(' ' IN reverse('Silva, Ana')))) reverse ----------- Ana

Topik berikutnya:

TEXTLEN

Topik sebelumnya:

STRTOL

Di halaman ini

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.