一、场景描述
平时在用字符串拼接sql语句的时候,有没有遇到过下面的情况:
没错,就是单双引号问题。其实,关于双引号我们是容易理解的,sql语句是用String字符串拼接的,因此需要用到双引号。但是为什么双引号里面还要嵌套一个单引号是不是对于刚入门的初学者有些蒙蔽了呢,下面我们一起来分析一下,你就明白啦!
二、问题分析
平时写sql的时候,遇到条件为字符串的值,我们会习惯性的加上单引号''
其实,在sql语句中,尤其是MySQL,对于字符型只接受单引号
select * from student t where t.name = '冰雪的灵界石'
复制代码
而对于数字类型的就不需要加单引号了
select * from student t where t.age = 23
复制代码
凡事都有但是,上面的情况发生在数据库端,如果在应用程序端那就不一样了。在写代码的时候,我们如果需要手写sql进行拼接的话,那么sql语句也作为字符串存在,就需要双引号了,可是我的sql条件里有字符型的变量,这个时候就遇到了开篇的那张截图的情况了,双引号里面包裹着单引号。
StringBuilder sql = new StringBuilder();
sql.append("select * from student t where t.gender = ' " + gender + " ' ")
复制代码
这样把sql解析到数据库里去执行的时候就不会出错啦
三、总结
平时在开发的时候,或多或少遇到的一些问题就是sql语句:代码早就写好了,却一直在调试sql。所以,我们一定要练好基本功,遇到问题学会分析,在解决问题的过程中也是你成长最快的时候。
书写sql语句的时候,字符型要加上单引号,数字型就不需要了
在代码里手写sql拼接时要把字符串的变量用单引号包住