您的位置:首页 > 数据库 > MySQL

【mysql】sql语句的更新和截取

2017-05-23 18:11 447 查看

更新

update 表名 set 字段 = 要修改的内容 where 条件

- 字符串拼接

UPDATE t_vbquestion SET Answer1=CONCAT(‘A. ‘,Answer1),Answer2=CONCAT(‘B. ‘,Answer2) where QuestionTypeID=1

- 批量更新

case when

UPDATE t_vbquestion SET ChapterID = (CASE ChapterID WHEN ‘第一章’ THEN ‘1’ WHEN ‘第二章’ THEN ‘2’ WHEN ‘第三章’ THEN ‘3’ ELSE ‘9’ END)

插入

我们一般写好sql脚本,执行批量插入操作,在执行过程中会出现因为有原纪录而中断的失败过程。使用ignore、replace、ON DUPLICATE KEY UPDATE 关键字可以有效的避免,但是前提是用主键primary或者唯一索引对记录进行了唯一性确定。

INSERT IGNORE INTO t_student(id,name) values(‘119030303’,’小红’);

假如数据库中有重复记录,直接返回影响的行数为0,也即没有进行插入

REPLACE INTO t_student(id,name) values(‘119030303’,’小红’);

假如新的记录和旧的记录同时存在,则旧的删除,新的插入。

截取

left() right()

select left(QuestionContent,4) from t_vbquestion

SUBSTRING

UPDATE t_vbquestion SET Answer1=SUBSTRING(Answer1,2)

where QuestionTypeID=1

ltrim() rtrim()

截断空格,没有trim()。

SUBSTRING_INDEX

UPDATE t_vbquestion SET Answer1=SUBSTRING(Answer1,2) where QuestionTypeID=1

存储过程批量更新

BEGIN

DECLARE studentcode char(50) ;

DECLARE enYeartime char(50) ;

DECLARE update_cur CURSOR FOR SELECT code,left(code,2) FROM >tb_student;

declare exit handler for sqlexception rollback;

– 定义一个游标

start transaction;

– 开启游标

OPEN update_cur;

– 遍历所找到的结果集中的所有元素

cursor_loop:loop

FETCH update_cur INTO studentcode,enYeartime;

update tb_student set entranceDate=(select >concat(‘20’,enYeartime,’-09-01’)) where code=studentcode;

end loop cursor_loop;

– 关闭游标

CLOSE update_cur;

commit;

END

基础的东西,平时经常用,会记得好,平时不用,也是会忘记的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: