用单引号替换逗号

Replace commas with single quotes

我有一个参数正在传递给存储过程。参数值如下所示:

0001,0002,0003

我需要它看起来像这样:

'0001','0002','0003'

我尝试了几种方法来转义替换函数中的单引号,但是 MySQL Workbench 一直给我语法错误。

replace(AccountNumber, ',', '\',\'');
replace(AccountNumber, ',', '','');

我在查找文本时遇到 'Unexpected' 语法错误,在替换为文本时遇到 'Unexpected' 语法错误。

如有任何帮助,我们将不胜感激。

您可以使用这样的查询来完成:

SELECT CONCAT( "'"
        ,REPLACE('0001,0002,0003',',',"','")
        , "'");

样本

MariaDB [bernd]> SELECT CONCAT( "'",REPLACE('0001,0002,0003',',',"','"), "'");
+-------------------------------------------------------+
| CONCAT( "'",REPLACE('0001,0002,0003',',',"','"), "'") |
+-------------------------------------------------------+
| '0001','0002','0003'                                  |
+-------------------------------------------------------+
1 row in set (0.02 sec)

你的第一个语法是正确的;您声明中的其他内容您没有显示是错误的。尽管您还想在整个内容周围添加单引号:

select concat('\'',replace(AccountNumber, ',', '\',\''),'\'')

参见fiddle

您可能会发现使用双引号更方便:

select concat("'",replace(AccountNumber, ',', "','"),"'")

此数据来自 SSRS 报告,我无法访问该报告,否则我会在那里修改它。

事实证明,我的问题是我只是让 Replace 语句出现在一行上,我没有将返回值设置为变量。所以一旦我添加

Set @AccntNo = CONCAT("'", Replace(....), "'");

语法错误消失了。但是@[Bernd Buffen] 和@ysth 是对的。