更新包含int数字的字符串部分

时间:2017-12-13 00:41:02

标签: mysql sql

了解如何更新字符串的一部分。 字符串如下所示:'0 0 0 6 7 2 6 8 6 1 7 5 3 2 4 9 9 4'

我想要的是将第一个9字符串数量更改为0。 关于如何仅使用MySQL的任何建议?

2 个答案:

答案 0 :(得分:0)

如果你的字符串格式/长度是固定的那么快又脏:

-- Concat with hardcode prefix with tail of the string:
SELECT CONCAT("0 0 0 0 0 0 0 0 0 ", SUBSTRING("0 0 0 6 7 2 6 8 6 1 7 5 3 2 4 9 9 4", 19))

-- Update
UPDATE {TABLE}
SET {COLUMN} = CONCAT("0 0 0 0 0 0 0 0 0 ", SUBSTRING({COLUMN}, 19))

答案 1 :(得分:0)

试试这个(经过测试):

select 
CONCAT(
LEFT('0 0 0 6 7 2 6 8 6 1 7 5 3 2 4 9 9 4', INSTR('0 0 0 6 7 2 6 8 6 1 7 5 3 2 4 9 9 4','9')-1)             
,'0',
RIGHT( '0 0 0 6 7 2 6 8 6 1 7 5 3 2 4 9 9 4',CHAR_LENGTH('0 0 0 6 7 2 6 8 6 1 7 5 3 2 4 9 9 4')-1- CHAR_LENGTH(LEFT('0 0 0 6 7 2 6 8 6 1 7 5 3 2 4 9 9 4', INSTR('0 0 0 6 7 2 6 8 6 1 7 5 3 2 4 9 9 4','9')-1)))
)


假设s='0 0 0 6 7 2 6 8 6 1 7 5 3 2 4 9 9 4'(并且可以是每个字符串)

select 
CONCAT(
LEFT(s, INSTR(s,'9')-1)             
,'0',
RIGHT(s,CHAR_LENGTH(s)-1- CHAR_LENGTH(LEFT(s, INSTR(s,'9')-1)))
)

参见演示:http://rextester.com/OIMXCY58613