Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL CHAR () so với T-SQL CHAR ():Sự khác biệt là gì?

Có rất nhiều chức năng được bao gồm trong cả MySQL và SQL Server. Tuy nhiên, chỉ vì cả hai DBMS chia sẻ các chức năng có cùng tên, không có nghĩa là các chức năng đó hoạt động giống hệt nhau.

Lấy CHAR() Ví dụ. Cả MySQL và SQL Server đều bao gồm chức năng này. Về mặt kỹ thuật, đối với SQL Server, nó thực sự là một chức năng T-SQL, nhưng điều đó không quan trọng. Vấn đề là MySQL CHAR() hàm cung cấp nhiều chức năng hơn T-SQL / SQL Server CHAR() chức năng.

Đặc biệt, phiên bản MySQL chấp nhận nhiều số nguyên, trong khi phiên bản T-SQL chỉ chấp nhận một số nguyên duy nhất. Phiên bản MySQL cũng chấp nhận USING mệnh đề cho phép bạn chỉ định bộ ký tự nào sẽ sử dụng (phiên bản T-SQL không có mệnh đề này).

Dưới đây là một số ví dụ về những khác biệt này.

Nhiều số nguyên

Dưới đây là những gì sẽ xảy ra nếu chúng tôi cung cấp nhiều số nguyên khi sử dụng MySQL:

SELECT CHAR(67, 97, 116) AS 'MySQL Result';

Kết quả:

+--------------+
| MySQL Result |
+--------------+
| Cat          |
+--------------+

Vì vậy, nó diễn giải thành công từng số nguyên và trả về kết quả.

Đây là những gì sẽ xảy ra nếu chúng ta làm điều tương tự bằng cách sử dụng SQL Server:

SELECT CHAR(67, 97, 116) AS 'SQL Server Result';

Kết quả:

The char function requires 1 argument(s).

Để đạt được kết quả tương tự như ví dụ MySQL, chúng ta cần phải nối nhiều CHAR() chức năng. Một cái gì đó như thế này:

SELECT CHAR(67) + CHAR(97) + CHAR(116) AS 'Concatenated Result';

Kết quả:

+-----------------------+
| Concatenated Result   |
|-----------------------|
| Cat                   |
+-----------------------+

USING Mệnh đề

Phiên bản MySQL của CHAR() chấp nhận USING , trong khi phiên bản T-SQL thì không. Dưới đây là một ví dụ mà tôi chỉ định điểm mã unicode bằng MySQL:

SELECT CHAR(0x027FE USING ucs2) AS 'MySQL Result';

Kết quả:

+--------------+
| MySQL Result |
+--------------+
| ⟾            |
+--------------+

Và đây là những gì sẽ xảy ra khi tôi chuyển sang SQL Server:

SELECT CHAR(0x027FE USING ucs2) AS 'SQL Server Result';

Kết quả:

Incorrect syntax near 'USING'.

Ví dụ 3 - Nhiều byte kết quả

Trong MySQL, các đối số lớn hơn 255 được tự động chuyển đổi thành nhiều byte kết quả. Trong SQL Server, các đối số lớn hơn 255 trả về NULL .

Dưới đây là một ví dụ sử dụng MySQL:

SELECT HEX(CHAR(1799)) AS 'MySQL Result';

Kết quả:

+--------------+
| MySQL Result |
+--------------+
| 0707         |
+--------------+

Và ở đây, chúng tôi cố gắng làm điều tương tự trong SQL Server:

SELECT CONVERT(VARCHAR(1000), CHAR(1799), 2) AS 'SQL Server Result';

Kết quả:

+---------------------+
| 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. MySQL:Sắp xếp các giá trị GROUP_CONCAT

  2. xampp MySQL không khởi động

  3. Tại sao mysqli đưa ra lỗi Lệnh không đồng bộ?

  4. Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost' với PHPMyAdmin

  5. Giải thích hàm IF () trong MySQL