MySQL里的单引号

MySQL里的引号特别多,单引号、双引号、反引号。双引号和反引号一般修饰表名、字段名,反引号可以防止因为表名或者字段名为MySQL的关键字导致的解析问题。而单引号是用来把值包起来的。

如果值里有单引号,那么输入单引号有两种方法:一、用两个单引号表示一个单引号,二、用斜杠加单引号来表示一个单引号。


insert into kv set item='name', value='I''am LiLei';
=> I'am LiLei
insert into kv set item='name', value='I\'am LiLei';
=> I'am LiLei
insert into kv set item='name', value='I''''am LiLei';
=> I''am LiLei
insert into kv set item='name', value='I\'\'am LiLei';
=> I''am LiLei

#值里有双引号是无所谓的
insert into kv set item='name', value='I"am LiLei';
=> I"am LiLei

如果你使用select查看表中数据,都OK,但是如果表结构的comment里有引号呢。如:


alter table kv modify "value" varbinary(4096) NOT NULL COMMENT '键值I''am LiLei';

使用show create table kv来查看,会发现却是两个单引号:


"value" varbinary(4096) NOT NULL COMMENT '键值I''am LiLei'

开始被这个弄懵了,后来才想明白,show create table查看的是建表的SQL语句,方便直接copy、paste、执行,所以理应是两个单引号。

特别注意:如果值用双引号,会被认为是对表中其他字段的引用,所以使用双引号来包值,会出现莫名其妙的错误:


[phabricator_herald]> UPDATE `herald_transcript` SET objectTranscript = ""  WHERE garbageCollected = 0 LIMIT 100;
ERROR 1054 (42S22): Unknown column '' in 'field list'

 

发表于 2018年01月16日 19:13   修改于 2021年04月11日 20:20   评论:0   阅读:2369  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo