Jika Anda telah bekerja dengan SQL Server untuk waktu yang lama, Anda mungkin menemukan Datalength()
fungsi. Fungsi ini mengembalikan jumlah byte yang digunakan untuk mewakili ekspresi.
Tetapi jika Anda pindah ke MySQL, Anda mungkin mencari fungsi yang melakukan hal yang sama.
Di MySQL, Length()
fungsi pada dasarnya melakukan hal yang sama dengan T-SQL Datalength()
fungsi tidak di SQL Server (dan Azure). MySQL Length()
fungsi mengembalikan panjang string, diukur dalam byte.
Contoh
Berikut adalah beberapa contoh untuk ditunjukkan.
SQL Server
Berikut adalah contoh dasar untuk SQL Server (menggunakan T-SQL):
SELECT DATALENGTH('Cat') AS Datalength;
Hasil:
Datalength ---------- 3
MySQL
Inilah kueri yang setara di MySQL:
SELECT LENGTH('Cat') AS Length;
Hasil:
+--------+ | Length | +--------+ | 3 | +--------+
Keduanya Mengukur Byte
Namun yang terpenting, kedua fungsi tersebut mengukur byte , bukan karakter . Jadi jika data disimpan sebagai string Unicode, jumlah byte akan menjadi dua kali lipat jumlah karakter. Ini karena string Unicode menggunakan 2 byte per karakter.
Di bawah ini adalah contoh menjalankan kueri yang pada dasarnya sama terhadap kolom Unicode di SQL Server, lalu di MySQL.
SQL Server
SELECT DATALENGTH(ArtistName) AS DataLength FROM Artists WHERE ArtistName = 'Lit';
Hasil:
DataLength ---------- 6
MySQL
SELECT LENGTH(ArtistName) AS Length FROM Artists WHERE ArtistName = 'Lit';
Hasil:
+--------+ | Length | +--------+ | 6 | +--------+
Penting untuk dicatat bahwa alasan contoh ini mengembalikan 6 adalah karena tipe data yang digunakan dalam database. Kedua contoh juga dapat mengembalikan 3 jika data tidak disimpan sebagai Unicode.
Karakter vs Byte
Dalam contoh SQL Server, jika kita menggunakan Len()
sebagai gantinya, itu akan dikembalikan 3. Ini karena Len()
mengembalikan jumlah karakter – bukan byte.
Demikian pula untuk MySQL, jika kita menggunakan Char_Length()
fungsi, itu juga akan mengembalikan 3, karena Char_Length()
mengembalikan jumlah karakter, bukan byte.