字符串字段MySQL中的计算
我一直在尝试在表中编辑/添加值字符串列(进程) 字符串中的当前值如下所示:字符串字段MySQL中的计算,mysql,Mysql,我一直在尝试在表中编辑/添加值字符串列(进程) 字符串中的当前值如下所示: 1:38,25:39,41:101 我要做的是在“X:”之后的每个值上加1000,因此在查询之后,这些值应该是: 1:1038,25:1039,41:1101 我已经看过CONCAT,但它似乎只在特定参数内的字符串中插入一个值。有什么想法吗?您可以使用CASTCONCAT和SUBSTRING\u INDEX函数来获得所需的输出,例如: SELECT CONCAT(SUBSTRING_INDEX(value, ':'
1:38,25:39,41:101
我要做的是在“X:”之后的每个值上加1000,因此在查询之后,这些值应该是:
1:1038,25:1039,41:1101
我已经看过CONCAT,但它似乎只在特定参数内的字符串中插入一个值。有什么想法吗?您可以使用
CAST
CONCAT
和SUBSTRING\u INDEX
函数来获得所需的输出,例如:
SELECT
CONCAT(SUBSTRING_INDEX(value, ':', 1), ":", (CAST(SUBSTRING_INDEX(value, ':', -1) AS UNSIGNED) + 1000))
FROM test;
以下是变量的使用可以帮助您实现您想要的:
select @pre := SUBSTRING_INDEX(SUBSTRING_INDEX(`column_name`, ':', 1), '0', -1),
@post := SUBSTRING_INDEX(SUBSTRING_INDEX(`column_name`, ':', 2), '0', -1),
concat(@pre,":",@post+1000) as required_value from table_name;
CREATE TEMPORARY TABLE temp (val VARCHAR(50));
SET @str = CONCAT("INSERT INTO temp (val) VALUES ('",REPLACE((SELECT org FROM mytable LIMIT 1), ",", "'),('"),"');");
PREPARE st FROM @str;
EXECUTE st;
SELECT
GROUP_CONCAT(DISTINCT CONCAT(SUBSTRING_INDEX(val, ':', 1), ":", (CAST(SUBSTRING_INDEX(val, ':', -1) AS UNSIGNED) + 1000)))
FROM temp;
参考资料:
您应该规范化数据并将其存储在单独的表中。也就是说,要回答您的问题,您可以使用这些查询来实现您的目标:
select @pre := SUBSTRING_INDEX(SUBSTRING_INDEX(`column_name`, ':', 1), '0', -1),
@post := SUBSTRING_INDEX(SUBSTRING_INDEX(`column_name`, ':', 2), '0', -1),
concat(@pre,":",@post+1000) as required_value from table_name;
CREATE TEMPORARY TABLE temp (val VARCHAR(50));
SET @str = CONCAT("INSERT INTO temp (val) VALUES ('",REPLACE((SELECT org FROM mytable LIMIT 1), ",", "'),('"),"');");
PREPARE st FROM @str;
EXECUTE st;
SELECT
GROUP_CONCAT(DISTINCT CONCAT(SUBSTRING_INDEX(val, ':', 1), ":", (CAST(SUBSTRING_INDEX(val, ':', -1) AS UNSIGNED) + 1000)))
FROM temp;
只需确保将上述查询中的SELECT org FROM mytable LIMIT 1
替换为返回需要编辑的字符串1:38,25:39,41:101
。请注意,此示例仅显示如何处理一个字符串中的值。如果您需要处理多行的值,则需要进一步调整
检查sqlfiddle:现在您知道为什么规范化有帮助了@Paul所提供的示例显示的是用逗号分隔的单行还是多行?所讨论的数据不在单独的行中。因此,这不能回答给定的问题。不确定这是否回答了问题,但决不能在同一语句中读写同一个用户变量。无法保证处理顺序,因此无法保证结果。