CHAR()將傳入的參數轉為字串

CHAR(N,... [USING charset])
  • N,...為傳入的數值,可傳入多個數值
  • 使用USING charset可以指定回傳結果的字元集

CHAR()將每個參數N換算為一個整數,其回傳值為一個包含這些整數的代碼值所給出的字元的字串。NULL值被省略。
mysql> SELECT CHAR(77,121,83,81,'76');
-> 'MySQL'

mysql> SELECT CHAR(77,77.3,'77.3');
-> 'MMM'

大於255的CHAR()參數被轉換為多結果字元。 例如,CHAR(256) 相當於 CHAR(1,0), 而CHAR(256*256) 則相當於 CHAR(1,0,0):
mysql> SELECT HEX(CHAR(1,0)), HEX(CHAR(256));
+----------------+----------------+
| HEX(CHAR(1,0)) | HEX(CHAR(256)) |
+----------------+----------------+
| 0100 | 0100 |
+----------------+----------------+

mysql> SELECT HEX(CHAR(1,0,0)), HEX(CHAR(256*256));
+------------------+--------------------+
| HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) |
+------------------+--------------------+
| 010000 | 010000 |
+------------------+--------------------+

CHAR()的回傳值為一個二進制字串。可選擇使用USING語句產生一個給出的字元集中的字串:
mysql> SELECT CHARSET(CHAR(0x65)),
CHARSET(CHAR(0x65 USING utf8));
+---------------------+--------------------------------+
| CHARSET(CHAR(0x65)) | CHARSET(CHAR(0x65 USING utf8)) |
+---------------------+--------------------------------+
| binary | utf8 |
+---------------------+--------------------------------+
如果使用USING時,結果字串不符合給出的字元集,則會發出警告。
如果開啟strict SQL mode,則CHAR()的結果會成為NULL。

沒有留言: