日期:2014-05-16  浏览次数:20725 次

mysql中设置支持中文和批量DML语句

1.mysql中设置功能中设置为GBK支持中文。
2.UPDATE语句报错(用法问题):
[SQL]? UPDATE tb_stuinfo SET stuName='王维' AND stuSex='男'AND stuHomeAddr='山西祁县'WHERE id=1;

[Err] 1292 - Truncated incorrect DOUBLE value: '王维'
百度发现1292错误多为:
?? (1)MySQL 支持带符号和无符号的64比特值的运算。若你正在使用数字操作符 (如 +) 而其中一个操作数为无符号整数,则结果为无符号。可使用SIGNED 和UNSIGNED cast 操作符来覆盖它。将运算分别派给带符号或无符号64比特整数。
?(2)SELECT CAST(1-2 AS UNSIGNED)
直接赋值问题,采用了concat函数:concat(Str,’’)来变相的解决了

?最后的解决方法是:
?UPDATE tb_stuinfo SET stuName='王维',stuSex='男',stuHomeAddr='山西祁县'WHERE id=1;


3.INSERT数据时的批量插入:
(1)INSERT INTO tb_course VALUES
( 6,'软件工程',2,19,'星期四','第6.7.8节','4教402','刘俊',4,'专业基础课','结构化分析设计,数据流图,面向对象分析设计,UML图,项目管理,....',180,30,'40','可选','JSJ0807117');
解决(2)mysql> insert into post values
??? -> ('1231af 3qerq r\n\n\n\n\nadfwer'),
??? -> ('1231af 3qerq r#######nadfwer');
4.DELETE批量表中内容:
delete from table where ID in (1,2,3,4,5,6,7,8,9);
5.选择删除一记录中的字段值长度

MySQL中假如某一表名是: post 字段名是: message
问题1:要删除message中的所有记录末尾向前直到遇到连续5个回车之间的内容,或者说是连续5个回车之后所有的内容,这个语句该怎么写呢?
问题2:另外如果想删除message中某字符比如五个#####号之后所有的内容,语句如何写?
update post set message=SUBSTRING_INDEX(message,'#####',1);
SUBSTRING_INDEX(message, '\n\n\n\n\n', -1)

6.mysql1136 - Column count doesn't match value

这个一般是问题是:
1、检查一下有没有序号自增加的字段。

2、所存储的数据与数据库表的字段类型定义不相匹配.

3、字段类型是否正确, 是否越界, 有无把一种类型的数据存储到另一种数据类型中.