mySQL常见错误
一、使用命令行进行查询时中文显示为乱码:
在命令行模式下,使用select 语句查询表中数据时,若表中数据存在中文那么显示的就是乱码,而且insert中文的时候也会报错: Incorrect string value: '\xB0\xCB' for column 'name' at row 1,如图:
这是数据库编码格式格式的:set names uft8。再查询就会显示正常,而且insert也能成功。
2、delete语句:
在SQL Server中,删除语句可以用delete .....,也可以用delete from...,也就是使用"delete test where id=1"和"delete from test where id=1" 效果是一样滴,都可以删除数据。
但是在MySql里面,必须得用delete from....才能删除数据,直接使用delete...会报错。
3、添加后缀或前缀:
为一个字段添加后缀或前缀,譬如说为table1的field2字段添加前缀abc,后缀abc。
使用SQL Server很简单,就像JS中的拼接一样:
前缀:update table1 set field2='abc'+field2 where field1=1;
后缀:update table1 set field2=field2+'abc' where field1=1;
在MySQL里面,这么添加会报错,得使用concat函数进行添加。
前缀:update table1 set field2=concat('abc',field2) where field1=1;
后缀:update table1 set field2=concat(field2,'abc') where field1=1;
4、去除前缀或后缀:
在SQL Server里面可以使用stuff函数,
删除前缀:update test set field2=stuff(field2,1,3,'') where field1=1;
删除后缀:update test set field2=stuff(field2,7,3,'') where field1=1;
stuff()函数四个参数简析:
param1:要删除的字符串;
param2:从哪个下标开始删除,下标从1开始
param3:删除的字符串的个数
param4:在删除字符串的地方插入的字符串
所以上面删除前缀和后缀的原理就是:前缀中abc在最前面,所以下标从1开始,删除3个,删除完成之后插入空格,这样子前缀就没有了。也因此,后缀abc的下标就从7开始了。
当然也可以用substring()函数,这个函数更简单:
substring()函数三个参数简析:
param1:要进行截取的字符串
param2:从哪个下标开始截取,下标从1开始
param3:截取的长度。
因此,删除前缀和后缀的方法为:
前缀:update test set field2=substring(field2,4,len(field2)-3) where field1=1;
后缀:update test set field2=substring(field2,1,len(field2)-3) where field1=1;
前缀删除中,abc在最前面,所以下标从1开始,截取“字符串的长度减去abc的长度”,也就是len(field2)-3。删除前缀之后,直接从第一个字符开始截取,其长度为字符串长度减去最后的三个字符串长度。
MySQL中也可以用substr函数,用法与SQL Server相同,但是我们也可以用right()函数,这个函数与substring差不多,它用来返回字符串的最右面指定个数的字符。因此,删除前缀比较简单,删除后缀有点费劲此时就可以用substring来处理:
前缀:update test set field2=right(field2,length(field2)-3) where field1=1;
后缀:update test set field2=substr(field2,1,len(field2)-3) where field1=1;
上一篇: Weblogic的heapdump
下一篇: Orcale操作数据库