gpt4 book ai didi

mysql将select中的数字值替换为另一个字符串

转载 作者:行者123 更新时间:2023-11-30 22:21:54 25 4
gpt4 key购买 nike

我想替换如下值:

1106,1107,1108 

从选择查询到字符串链接,如:

http://something.com/img/1/1/0/6/1106.jpg,http://something.com/img/1/1/0/7/1107.jpg,http://something.com/img/1/1/0/8/1108.jpg

可以在mysql查询中完成吗?

最佳答案

假设图像名称具有可变长度,我认为您需要编写一个存储函数来在 MySQL 中本地实现它,没有明显的内置函数。

下面的示例将采用 1106 并将其转换为 http://something.com/img/1/1/0/6/1106.jpg。要解析多个图像 ID,例如 1106,1107,1108,您需要扩展它以在每次找到逗号时再次插入路径,或者(更好)从数据库中选择结果不是逗号分隔的方式。

DELIMITER //
CREATE FUNCTION TO_IMAGE_PATH(id VARCHAR(255), path VARCHAR(255))
RETURNS VARCHAR(255) DETERMINISTIC NO SQL
BEGIN
DECLARE output VARCHAR(255) DEFAULT path;
DECLARE position INT DEFAULT 1;
WHILE position <= LENGTH(id) DO
SET output = CONCAT(output, SUBSTRING(id, position, 1), '/');
SET position = position + 1;
END WHILE;
SET output = CONCAT(output, id, '.jpg');
RETURN output;
END//
DELIMITER ;

SELECT TO_IMAGE_PATH('1106', 'http://something.com/img/');
-- Output: http://something.com/img/1/1/0/6/1106.jpg

您可能更愿意传入 jpg 扩展名,或者对初始路径进行硬编码。

虽然这确实有效,但这似乎是一个问题的示例,在您选择结果后,使用另一种编程语言可能会更好地解决该问题。

如果 所有 图像 ID 的长度恰好是 4 位数字,您可以做更简单(但不太优雅)

SELECT CONCAT(
'http://something.com/img/',
SUBSTRING(field_name, 1, 1), '/',
SUBSTRING(field_name, 2, 1), '/',
SUBSTRING(field_name, 3, 1), '/',
SUBSTRING(field_name, 4, 1), '/',
field_name, '.jpg');

同样,您需要弄清楚如何选择值,以免它们以逗号分隔。一般来说,如果您在数据库中存储值以逗号分隔,则 you shouldn't be .

关于mysql将select中的数字值替换为另一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36449340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com