问题描述
我正尝试将表情符号/表情符号插入到SQL Server数据库中,但它只存储???,而不是表情符号/表情符号。
我只找到针对SQL Server的帮助,而不是MySQL。
我已尝试:link
但找不到答案,甚至无法设置:
ALTER TABLE mytable charset=utf8mb4, MODIFY COLUMN textfield1 VARCHAR(255) CHARACTER SET utf8mb4, MODIFY COLUMN textfield2 VARCHAR(255) CHARACTER SET utf8mb4;
SQL Server无法识别此命令。这仅适用于Microsoft SQL Server,不适用于MySQL
推荐答案
使用NVARCHAR(size)数据类型并以N作为字符串文本的前缀:
CREATE TABLE #tab(col NVARCHAR(100)); INSERT INTO #tab(col) VALUES (N'?? ?? ?? ?? ?? ?? ? ?? ?? ?? ?? ?? ??'); SELECT * FROM #tab;
db<>fiddle demo
输出:
╔═════════════════════════════════╗ ║ col ║ ╠═════════════════════════════════╣ ║ ?? ?? ?? ?? ?? ?? ? ?? ?? ?? ?? ???? ║ ╚═════════════════════════════════╝
编辑:
SQL Server 2019及更高版本支持UTF-8排序规则:
CREATE TABLE t(col VARCHAR(100) COLLATE Latin1_General_100_CI_AI_SC_UTF8); -- column's data type is VARCHAR! -- collate could be set on column/database/instance level INSERT INTO t(col) VALUES (N'??'); SELECT * FROM t; -- col -- ??
db<>fiddle demo - SQL Server 2019