Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana Fungsi OCTET_LENGTH() Bekerja di MySQL

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() .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Migrasi dari Oracle ke Server MySQL / Percona

  2. Penggunaan PDO di kelas

  3. Dapatkan tahun ini, bulan ini dan hari ini di MySQL

  4. Apa yang setara dengan kueri MySQL dari PHP strip_tags?

  5. kegagalan pencarian teks lengkap mysql