如何使用带有变量的MySQL REPLACE函数?

4
我知道MySQL的REPLACE可以与INSERTUPDATE查询一起使用,但是如何在已声明的变量中替换字符串呢?
这是我尝试的代码,但它不起作用:
DECLARE genre_string VARCHAR(255);

SET genre_string = 'drama, thriller';

SET genre_string = REPLACE(genre_string,'drama','Drama');

SELECT genre_string;

如何使它在当前声明的变量上工作?

当你使用变量时,难道不必在其前面添加@符号吗? - Fabien Warniez
我明白你想做什么,但我很难理解为什么要这样做。有时候解决问题的方法不是治疗症状,而是修复潜在的问题。你为什么需要这样做? - kba
我正在导入一些数据,然后稍微清理一下字符串,再将它们插入到其他地方.. 导入的数据来自Excel文件,是的,我可以在那里清理它,但由于导入非常频繁,所以最好在此存储过程中进行清理,因为这样会更快.. - Ahmad
@Ahmad 我假设你有一个程序可以进行导入。在那里进行字符串替换。或者使用 SELECT REPLACE('drama, thriller','drama','Drama'); 将会得到相同的结果。更重要的是,你不应该将多个流派添加到一个字段中,而是应该对数据进行规范化处理。 - kba
不用担心最后一部分,存储过程稍后会将字符串拆分并单独处理每个流派..源数据使用该结构,无法更改.. - Ahmad
1个回答

2
以下内容对我有效:

下面是我的做法:

DECLARE @genre_string VARCHAR(255);

SET @genre_string = 'drama, thriller';

SET @genre_string = REPLACE(@genre_string,'drama','Drama');

SELECT @genre_string

2
@ 是用户定义的变量,不应该声明。你最后三行代码可以单独运行。你只需要声明本地变量即可。 - kba
我忘记在REPLACE前面使用genre_string =,这就是问题的原因 :) - Ahmad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接