Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL CHAR() a T-SQL CHAR():jaka jest różnica?

Istnieje wiele funkcji zawartych zarówno w MySQL, jak i SQL Server. Jednak to, że oba SZBD współdzielą funkcje o tej samej nazwie, nie oznacza, że ​​te funkcje działają dokładnie w ten sam sposób.

Weź CHAR() na przykład. Zarówno MySQL, jak i SQL Server zawierają tę funkcję. Technicznie rzecz biorąc, dla SQL Server jest to w rzeczywistości funkcja T-SQL, ale to nie ma znaczenia. Chodzi o to, że MySQL CHAR() funkcja zapewnia większą funkcjonalność niż T-SQL/SQL Server CHAR() funkcja.

W szczególności wersja MySQL akceptuje wiele liczb całkowitych, podczas gdy wersja T-SQL akceptuje tylko jedną liczbę całkowitą. Wersja MySQL akceptuje również USING klauzula, która pozwala określić, którego zestawu znaków użyć (wersja T-SQL nie ma tej klauzuli).

Poniżej znajduje się kilka przykładów tych różnic.

Wiele liczb całkowitych

Oto, co się stanie, jeśli dostarczymy wiele liczb całkowitych podczas korzystania z MySQL:

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

Wynik:

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

Dzięki temu pomyślnie interpretuje każdą liczbę całkowitą i zwraca wyniki.

Oto, co się stanie, jeśli zrobimy to samo za pomocą SQL Server:

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

Wynik:

The char function requires 1 argument(s).

Aby osiągnąć ten sam wynik, co w przykładzie MySQL, musielibyśmy połączyć wiele CHAR() Funkcje. Coś takiego:

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

Wynik:

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

USING Klauzula

Wersja MySQL funkcji CHAR() akceptuje USING klauzula, podczas gdy wersja T-SQL nie. Oto przykład, w którym określam punkt kodowy Unicode za pomocą MySQL:

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

Wynik:

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

A oto, co się stanie, gdy przejdę na SQL Server:

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

Wynik:

Incorrect syntax near 'USING'.

Przykład 3 – Wiele bajtów wyników

W MySQL argumenty większe niż 255 są automatycznie konwertowane na wiele bajtów wyników. W SQL Server argumenty większe niż 255 zwracają NULL .

Oto przykład użycia MySQL:

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

Wynik:

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

I tutaj próbujemy zrobić to samo w SQL Server:

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

Wynik:

+---------------------+
| 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. Jak mogę wstawić wiele wierszy do tabeli MySQL i zwrócić nowe identyfikatory?

  2. Błąd podczas używania z wyjątkiem w zapytaniu

  3. Uruchamianie klastra Galera na Kubernetes

  4. Nie znaleziono odpowiedniego sterownika dla 'jdbc:mysql://localhost:3306/mysql

  5. Darmowy hosting z obsługą PHP