col1 | col2 | col3
-----------------------------
1 | 1 | somestring 12
1 | 2 | somestring sd
2 | 1 | somestring gvr
2 | 2 | somestring 46
3 | 1 | somestring sdf
3 | 2 | somestring 4
...
我想更新col3 WHERE col2 = 2
与col3成为col1的CONCAT 并且全部替换''' - '。
如果col1< 10添加一个前导'0',所以'1'将是'01'
总共col3的值应该是'01 -somestring-sd'
有人可以帮我解释一下这个声明吗?
答案 0 :(得分:1)
创建数据/插入数据
CREATE TABLE Table1
(`col1` INT, `col2` INT, `col3` VARCHAR(255))
;
INSERT INTO Table1
(`col1`, `col2`, `col3`)
VALUES
(1, 1, 'somestring 12'),
(1, 2, 'somestring sd'),
(2, 1, 'somestring gvr'),
(2, 2, 'somestring 46'),
(3, 1, 'somestring sdf'),
(3, 2, 'somestring 4')
;
<强>查询强>
UPDATE
Table1
SET
col3 =
CASE
WHEN col1 < 10
THEN REPLACE(CONCAT('0', col1, '-', col3), ' ', '-')
ELSE REPLACE(CONCAT(col1, '-', col3), ' ', '-')
END
WHERE
col2 = 2
<强>结果强>
1 queries executed, 1 success, 0 errors, 0 warnings
Query: UPDATE Table1 SET col3 = CASE WHEN col1 < 10 THEN REPLACE(CONCAT('0', col1, '-', col3), ' ', '-') ELSE REPLACE(CONCAT(col1, '-',...
3 row(s) affected
<强>查询强>
SELECT * FROM Table1
<强>结果强>
col1 col2 col3
------ ------ ------------------
1 1 somestring 12
1 2 01-somestring-sd
2 1 somestring gvr
2 2 02-somestring-46
3 1 somestring sdf
3 2 03-somestring-4
答案 1 :(得分:0)
UPDATE TABLE1 SET COL3=CONCAT(IF(COL1 < 10,0,''),COL1,REPLACE(COL3, ' ', '-' )) WHERE COL2=2
尝试以上代码。
希望这会有所帮助。
答案 2 :(得分:0)
只需使用Concat和替换
update table_name as t set t.col3 =
CONCAT(if(t.col1<10,0,''),t.col1,REPLACE(t.col3,' ','-')) where
t.col2 =2;
答案 3 :(得分:0)
试试这个
Update table1
set
col3 = concat((case when col1>10 then '0'+col1 else col1 end),'-',REPLACE(COL3, ' ','-' ))
where col2=2