在使用下面的SQL查询时,发现去不掉空格,而且把limit 去掉以后空格就没有了,琢磨了很久才发现问题的关键所在。主要是\u0000在作怪!!!
select id,company_name,username,remarks,address from table_alldata where company_name !='' and remarks is null limit 1000;
结果是这样的:
回答:从class字节码的角度来理解吧
1.String s1 = ""的情况,下面是编译后的字节码,可以看到,这种情况s1="aaa"其实没什么区别的,都是从常量池推一个字符串到栈顶,并赋给本地变量。
2.String s2=null的情况,这个时候,并没有在常量池中生成任何的字符串常量,仅仅是将null推送到栈顶赋值给变量。
3.String s3 = "u0000"的情况,会在常量池生成一个表示NUL的一个字符串,也就是所谓的Control Character。