MySQLとSQLServerの両方に含まれている多くの機能があります。ただし、両方のDBMSが同じ名前の関数を共有しているからといって、それらの関数がまったく同じように機能するわけではありません。
CHAR()
を取る 例えば。 MySQLとSQLServerの両方にこの関数が含まれています。技術的には、SQL Serverの場合、実際にはT-SQL関数ですが、それは重要ではありません。重要なのは、MySQLのCHAR()
関数は、T-SQL /SQLサーバーのCHAR()
よりも多くの機能を提供します 機能。
特に、MySQLバージョンは複数の整数を受け入れますが、T-SQLバージョンは単一の整数のみを受け入れます。 MySQLバージョンはUSING
も受け入れます 使用する文字セットを指定できる句(T-SQLバージョンにはこの句がありません)。
以下は、これらの違いの例です。
複数の整数
MySQLを使用するときに複数の整数を指定すると、次のようになります。
SELECT CHAR(67, 97, 116) AS 'MySQL Result';
結果:
+--------------+ | MySQL Result | +--------------+ | Cat | +--------------+
したがって、各整数を正常に解釈し、結果を返します。
SQLServerを使用して同じことを行うとどうなりますか。
SELECT CHAR(67, 97, 116) AS 'SQL Server Result';
結果:
The char function requires 1 argument(s).
MySQLの例と同じ結果を得るには、複数のCHAR()
を連結する必要があります。 関数。このようなもの:
SELECT CHAR(67) + CHAR(97) + CHAR(116) AS 'Concatenated Result';
結果:
+-----------------------+ | Concatenated Result | |-----------------------| | Cat | +-----------------------+
USING
条項
MySQLバージョンのCHAR()
USING
を受け入れます 一方、T-SQLバージョンはそうではありません。 MySQLを使用してUnicodeコードポイントを指定する例を次に示します。
SELECT CHAR(0x027FE USING ucs2) AS 'MySQL Result';
結果:
+--------------+ | MySQL Result | +--------------+ | ⟾ | +--------------+
SQLServerに切り替えると次のようになります。
SELECT CHAR(0x027FE USING ucs2) AS 'SQL Server Result';
結果:
Incorrect syntax near 'USING'.
例3–複数の結果バイト
MySQLでは、255より大きい引数は自動的に複数の結果バイトに変換されます。 SQL Serverでは、255より大きい引数はNULL
を返します 。
MySQLを使用した例を次に示します。
SELECT HEX(CHAR(1799)) AS 'MySQL Result';
結果:
+--------------+ | MySQL Result | +--------------+ | 0707 | +--------------+
ここでは、SQLServerでも同じことを実行しようとしています。
SELECT CONVERT(VARCHAR(1000), CHAR(1799), 2) AS 'SQL Server Result';
結果:
+---------------------+ | SQL Server Result | |---------------------| | NULL | +---------------------+