Ada banyak fungsi yang disertakan dalam MySQL dan SQL Server. Namun, hanya karena kedua DBMS berbagi fungsi dengan nama yang sama, tidak berarti fungsi tersebut bekerja dengan cara yang persis sama.
Ambil CHAR()
Misalnya. Baik MySQL dan SQL Server menyertakan fungsi ini. Secara teknis, untuk SQL Server sebenarnya ini adalah fungsi T-SQL, tapi bukan itu intinya. Intinya adalah bahwa MySQL CHAR()
fungsi menyediakan fungsionalitas lebih dari T-SQL/SQL Server CHAR()
fungsi.
Secara khusus, versi MySQL menerima banyak bilangan bulat, sedangkan versi T-SQL hanya menerima satu bilangan bulat. Versi MySQL juga menerima USING
klausa yang memungkinkan Anda menentukan set karakter mana yang akan digunakan (versi T-SQL tidak memiliki klausa ini).
Berikut adalah beberapa contoh perbedaan tersebut.
Beberapa Bilangan Bulat
Inilah yang terjadi jika kami menyediakan banyak bilangan bulat saat menggunakan MySQL:
SELECT CHAR(67, 97, 116) AS 'MySQL Result';
Hasil:
+--------------+ | MySQL Result | +--------------+ | Cat | +--------------+
Jadi ia berhasil menginterpretasikan setiap bilangan bulat dan mengembalikan hasilnya.
Inilah yang terjadi jika kita melakukan hal yang sama menggunakan SQL Server:
SELECT CHAR(67, 97, 116) AS 'SQL Server Result';
Hasil:
The char function requires 1 argument(s).
Untuk mencapai hasil yang sama seperti contoh MySQL, kita perlu menggabungkan beberapa CHAR()
fungsi. Sesuatu seperti ini:
SELECT CHAR(67) + CHAR(97) + CHAR(116) AS 'Concatenated Result';
Hasil:
+-----------------------+ | Concatenated Result | |-----------------------| | Cat | +-----------------------+
The USING
Klausa
Versi MySQL dari CHAR()
menerima USING
klausa, sedangkan versi T-SQL tidak. Berikut adalah contoh di mana saya menentukan titik kode unicode menggunakan MySQL:
SELECT CHAR(0x027FE USING ucs2) AS 'MySQL Result';
Hasil:
+--------------+ | MySQL Result | +--------------+ | ⟾ | +--------------+
Dan inilah yang terjadi ketika saya beralih ke SQL Server:
SELECT CHAR(0x027FE USING ucs2) AS 'SQL Server Result';
Hasil:
Incorrect syntax near 'USING'.
Contoh 3 – Beberapa Byte Hasil
Di MySQL, argumen yang lebih besar dari 255 secara otomatis diubah menjadi beberapa byte hasil. Di SQL Server, argumen yang lebih besar dari 255 mengembalikan NULL
.
Berikut ini contoh menggunakan MySQL:
SELECT HEX(CHAR(1799)) AS 'MySQL Result';
Hasil:
+--------------+ | MySQL Result | +--------------+ | 0707 | +--------------+
Dan di sini, kami mencoba melakukan hal yang sama di SQL Server:
SELECT CONVERT(VARCHAR(1000), CHAR(1799), 2) AS 'SQL Server Result';
Hasil:
+---------------------+ | SQL Server Result | |---------------------| | NULL | +---------------------+