sql >> Databáze >  >> RDS >> Mysql

MySQL CHAR() vs T-SQL CHAR():Jaký je rozdíl?

Existuje mnoho funkcí, které jsou zahrnuty v MySQL i SQL Serveru. To, že oba DBMS sdílejí funkce stejného jména, však neznamená, že tyto funkce fungují úplně stejně.

Vezměte CHAR() například. MySQL i SQL Server tuto funkci obsahují. Technicky vzato, pro SQL Server je to vlastně funkce T-SQL, ale to je vedle. Jde o to, že MySQL CHAR() poskytuje více funkcí než T-SQL/SQL Server CHAR() funkce.

Konkrétně verze MySQL přijímá více celých čísel, zatímco verze T-SQL přijímá pouze jedno celé číslo. Verze MySQL také přijímá USING klauzule, která vám umožňuje určit, kterou znakovou sadu použít (verze T-SQL tuto klauzuli nemá).

Níže jsou uvedeny některé příklady těchto rozdílů.

Více celých čísel

Co se stane, když při používání MySQL zadáme více celých čísel:

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

Výsledek:

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

Úspěšně tedy interpretuje každé celé číslo a vrací výsledky.

Zde je to, co se stane, když uděláme totéž pomocí SQL Server:

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

Výsledek:

The char function requires 1 argument(s).

Abychom dosáhli stejného výsledku jako v příkladu MySQL, museli bychom zřetězit více CHAR() funkcí. Něco jako toto:

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

Výsledek:

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

Položka USING Ustanovení

MySQL verze CHAR() přijímá USING klauzule, zatímco verze T-SQL nikoli. Zde je příklad, kde určuji bod kódu unicode pomocí MySQL:

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

Výsledek:

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

A co se stane, když přepnu na SQL Server:

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

Výsledek:

Incorrect syntax near 'USING'.

Příklad 3 – Více bajtů výsledku

V MySQL jsou argumenty větší než 255 automaticky převedeny na více výsledných bajtů. V SQL Server argumenty větší než 255 vrátí NULL .

Zde je příklad použití MySQL:

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

Výsledek:

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

A zde se snažíme udělat totéž v SQL Server:

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

Výsledek:

+---------------------+
| SQL Server Result   |
|---------------------|
| NULL                |
+---------------------+

  1. SQLite - Vytvořte databázi

  2. Vytvoření kopie databáze v PostgreSQL

  3. Jak vložit řetězec, který obsahuje &

  4. SQL tečková notace