求助:向SQL表varchar列插入角引号(ALT174、ALT175)失败
解决SQL varchar列插入角引号失败的问题
你遇到的这个问题,大概率是字符编码不兼容或者输入方式导致的识别异常,下面给你几个实用的解决思路:
1. 用Unicode编码直接插入
ALT快捷键输入的字符可能因为系统或SQL客户端的编码问题无法被正确识别,你可以直接用角引号的Unicode值来构造插入语句:
- « 的Unicode编码是
U+00AB - » 的Unicode编码是
U+00BB
不同数据库的写法略有差异,给你几个常见数据库的示例:
MySQL/MariaDB
可以用CHAR()函数指定编码生成字符:
INSERT INTO TABLENAME (TABLEDATA) VALUES (CONCAT(CHAR(174 USING utf8), 'Last Name Here', CHAR(175 USING utf8), 'NAME_FIRST', CHAR(174 USING utf8), 'FirstName Here', CHAR(175 USING utf8)));
或者直接用Unicode转义写法:
INSERT INTO TABLENAME (TABLEDATA) VALUES ('\u00ABLast Name Here\u00BBNAME_FIRST\u00ABFirstName Here\u00BB');
SQL Server
建议用N前缀标记Unicode字符串(如果你的列是varchar,需先确认数据库字符集支持这类扩展字符,改成nvarchar会更稳妥):
INSERT INTO TABLENAME (TABLEDATA) VALUES (N'«Last Name Here»NAME_FIRST«FirstName Here»');
PostgreSQL
支持直接用U&前缀调用Unicode字符:
INSERT INTO TABLENAME (TABLEDATA) VALUES (U&'\00ABLast Name Here\00BBNAME_FIRST\00ABFirstName Here\00BB');
2. 确认列的字符集支持角引号
如果你的varchar列用的是ASCII这类仅支持基础字符的字符集,肯定插不进角引号。先检查列的字符集(以MySQL为例):
SHOW FULL COLUMNS FROM TABLENAME LIKE 'TABLEDATA';
如果字符集不支持,建议修改为utf8mb4(兼容所有Unicode字符):
ALTER TABLE TABLENAME MODIFY COLUMN TABLEDATA VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. 检查SQL客户端的编码设置
有时候问题出在客户端和数据库的编码不匹配:
- 确保你用的SQL客户端(比如Navicat、SSMS)的编码设置和数据库字符集一致(都设为UTF-8);
- 修改编码后记得重启客户端,避免设置不生效。
4. 直接复制粘贴角引号
ALT输入可能受系统输入法或区域设置影响,你可以直接从Word、网页等地方复制«和»这两个字符,粘贴到SQL语句里再执行,这种方式通常更可靠。
内容的提问来源于stack exchange,提问作者Pradeep H
相关产品推荐
相关产品推荐

