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

19 篇文章 0 订阅

更新

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

基础的东西,平时经常用,会记得好,平时不用,也是会忘记的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值