SQL语句中单引号转义符的问题
写SQL语句的时候发现单引号转义符的问题
现在了解了一些,可以自己写出正确的语句
比如说,我有一个表叫做bread
里面字段名分别为 datatime ,a,b,都是字符串型
现在我写的SQL语句是这样的
' Insert into bread(datatime,a,b) values ( ' + ' ' ' ' + datatimetostr(now) + ' ' ' ' + ', ' ' ' + floattostr(a.value) + ' ' ', ' ' ' + floattostr(b.value) + ' ' ') ')
其中datatimetostr(now)是将当前时间转换为字符串,floattostr是将浮点型数据转换成字符串
我现在的理解是这样的,由于SQL要求每个字符串类型的数据都要有单引号括起来,所以这个地方要用到转义字符,用两个单引号来表示一个单引号。
但是我很不理解的是,下面这条语句跟上面这条居然是等价的
' Insert into bread(datatime,a,b) values ( ' + ' ' ' ' + datatimetostr(now) + ' ' ' ' + ', ' + floattostr(a.value) + ', ' ' ' + floattostr(b.value) + ' ' ') ')
区别在于中间的floattostr(a.value) 它没有用单引号括起来。难道中间的就可以省略?还是别的原因?
困惑了半天了。。。。
[解决办法]
你的疑问应该在这里看一下我的测试
create table t2(a int,b float, c varchar2(100));
--插入数据
insert into t2
select '1 ', '2 ',3 from dual; --注意我插入的数据类型
--查询插入结果
select * from t2
--123