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

MySQL CHAR() vs T-SQL CHAR():Apa Bedanya?

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                |
+---------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menambahkan nol di depan ke beberapa nilai di kolom di MySQL

  2. Cara menginstal MySQL di macOS

  3. TIME_FORMAT() Contoh – MySQL

  4. Cari teks di bidang di setiap tabel database MySQL

  5. Cara mereset AUTO_INCREMENT di MySQL