sql >> Database >  >> RDS >> Mysql

MySQL CHAR() vs T-SQL CHAR():wat is het verschil?

Er zijn veel functies die zijn opgenomen in zowel MySQL als SQL Server. Het feit dat beide DBMS's functies met dezelfde naam delen, betekent echter niet dat die functies op precies dezelfde manier werken.

Neem CHAR() bijvoorbeeld. Zowel MySQL als SQL Server bevatten deze functie. Technisch gezien is het voor SQL Server eigenlijk een T-SQL-functie, maar daar gaat het niet om. Het punt is dat de MySQL CHAR() functie biedt meer functionaliteit dan de T-SQL/SQL Server CHAR() functie.

In het bijzonder accepteert de MySQL-versie meerdere gehele getallen, terwijl de T-SQL-versie slechts één geheel getal accepteert. De MySQL-versie accepteert ook een USING clausule waarmee u kunt specificeren welke tekenset moet worden gebruikt (de T-SQL-versie heeft deze clausule niet).

Hieronder staan ​​enkele voorbeelden van deze verschillen.

Meerdere gehele getallen

Dit is wat er gebeurt als we meerdere gehele getallen opgeven bij het gebruik van MySQL:

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

Resultaat:

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

Het interpreteert dus met succes elk geheel getal en geeft de resultaten terug.

Dit is wat er gebeurt als we hetzelfde doen met SQL Server:

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

Resultaat:

The char function requires 1 argument(s).

Om hetzelfde resultaat te bereiken als het MySQL-voorbeeld, moeten we meerdere CHAR() samenvoegen functies. Zoiets als dit:

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

Resultaat:

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

De USING Clausule

De MySQL-versie van CHAR() accepteert een USING clausule, terwijl de T-SQL-versie dat niet doet. Hier is een voorbeeld waarbij ik het unicode-codepunt specificeer met MySQL:

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

Resultaat:

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

En dit is wat er gebeurt als ik overschakel naar SQL Server:

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

Resultaat:

Incorrect syntax near 'USING'.

Voorbeeld 3 – Meerdere resultaatbytes

In MySQL worden argumenten groter dan 255 automatisch omgezet in meerdere resultaatbytes. In SQL Server retourneren argumenten groter dan 255 NULL .

Hier is een voorbeeld met MySQL:

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

Resultaat:

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

En hier proberen we hetzelfde te doen in SQL Server:

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

Resultaat:

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

  1. Hoe duur zijn impliciete conversies aan de kolomzijde?

  2. Virtualisering inschakelen in BIOS op laptop of desktop voor Virtualbox VM

  3. Hoe om te gaan met booleaanse waarden in SQLite met JavaScript-proxy's

  4. Missiekritieke toegangstoepassingen identificeren en beheren tijdens een ontwikkelingsproject