Di MySQL, OCTET_LENGTH()
fungsi mengembalikan panjang string, diukur dalam byte.
Fungsi ini sebenarnya merupakan sinonim dari LENGTH()
.
Sintaks
Sintaks dasarnya seperti ini:
OCTET_LENGTH(str)
Dimana str
adalah string yang Anda ingin panjangnya dikembalikan.
Contoh
SELECT OCTET_LENGTH('Cat');
Hasil:
+---------------------+ | OCTET_LENGTH('Cat') | +---------------------+ | 3 | +---------------------+
Ini adalah hasil yang sama yang kita dapatkan jika kita menggunakan CHAR_LENGTH()
fungsi. Namun, OCTET_LENGTH()
fungsi dapat mengembalikan hasil yang berbeda, bergantung pada tipe datanya.
Tipe Data
Saat Anda membuat kueri database, OCTET_LENGTH()
fungsi dapat mengembalikan hasil yang berbeda, tergantung pada tipe data. String Unicode mengembalikan dua kali lipat jumlah byte. String UTF-8 dapat bervariasi.
Berikut ini contoh penggunaan UTF-8:
SELECT CHAR_LENGTH(_utf8 '€'), OCTET_LENGTH(_utf8 '€');
Hasil:
+--------------------------+---------------------------+ | CHAR_LENGTH(_utf8 '€') | OCTET_LENGTH(_utf8 '€') | +--------------------------+---------------------------+ | 1 | 3 | +--------------------------+---------------------------+
Dalam hal ini, panjang karakter adalah 1, tetapi panjang oktet adalah 3 byte.
Dalam contoh berikut, kami meminta database. Dalam hal ini, ArtistName
kolom menggunakan varchar(255) tipe data:
SELECT OCTET_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Jadi hasilnya seperti ini:
+--------------------------+ | OCTET_LENGTH(ArtistName) | +--------------------------+ | 3 | +--------------------------+
Namun, jika kita mengubah kolom menjadi ucs2
, setiap karakter akan diwakili oleh kode Unicode 2 byte, sehingga hasilnya akan berbeda.
Untuk mendemonstrasikannya, kita dapat mengubah tabel seperti ini:
SELECT OCTET_LENGTH(ArtistName) ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;
Sekarang jika kita menanyakannya lagi:
SELECT OCTET_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Hasil:
+--------------------------+ | OCTET_LENGTH(ArtistName) | +--------------------------+ | 6 | +--------------------------+
Trailing Blank
OCTET_LENGTH()
fungsi menghitung trailing blank (seperti spasi di akhir string). Jadi jika kita menambahkan spasi di akhir contoh pertama, kita mendapatkan hasil sebagai berikut:
SELECT LENGTH('Cat ');
Hasil:
+----------------+ | LENGTH('Cat ') | +----------------+ | 4 | +----------------+
Kosong Utama
Kami mendapatkan hasil yang sama dengan kosong di depan (misalnya spasi di awal string):
SELECT LENGTH(' Cat');
Hasil:
+----------------+ | LENGTH(' Cat') | +----------------+ | 4 | +----------------+
Kecuali tentu saja, kami menggunakan fungsi seperti TRIM()
, RTRIM()
, atau LTRIM()
untuk memangkas spasi.
Contoh:
SELECT LENGTH(RTRIM('Cat '));
Hasil:
+-----------------------+ | LENGTH(RTRIM('Cat ')) | +-----------------------+ | 3 | +-----------------------+
Contoh Lainnya
Berikut adalah beberapa contoh berbagai string:
SELECT OCTET_LENGTH('Quiet Riot') AS 'Result 1', OCTET_LENGTH('') AS 'Result 2', OCTET_LENGTH('1234 7') AS 'Result 3', OCTET_LENGTH(' ') AS 'Result 4', OCTET_LENGTH(TRIM(' ')) AS 'Result 5';
Hasil:
+----------+----------+----------+----------+----------+ | Result 1 | Result 2 | Result 3 | Result 4 | Result 5 | +----------+----------+----------+----------+----------+ | 10 | 0 | 7 | 3 | 0 | +----------+----------+----------+----------+----------+
Perhatikan bahwa hasil 4 dan 5 berbeda karena saya menggunakan TRIM()
berfungsi untuk memangkas spasi dari hasil 5. Mengingat string hanya terdiri dari spasi, maka panjang string yang dipangkas adalah 0
.
Transact-SQL (untuk SQL Server, Azure) memiliki fungsi yang mirip dengan LENGTH()
MySQL dan OCTET_LENGTH()
fungsi, tetapi dalam T-SQL disebut DATALENGTH()
.