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;

猜你喜欢

转载自1017401036.iteye.com/blog/2299263