我有一个参数正在传递给存储过程。参数的值如下所示:
000100020003
我需要它看起来像这样:
'001','0002','0003'
我已经尝试了几种方法来转义Replace函数中的单引号,但MySQL工作台总是给我语法错误。
replace(AccountNumber, ',', '','');
replace(AccountNumber, ',', '','');
我在查找文本上得到一个"意外"语法错误,在替换为文本上得到了一个"异常"语法错误。
如有任何帮助,我们将不胜感激。
您可以使用这样的查询:
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, ',', '',''),''')
见小提琴。
你可能会发现使用双引号更方便:
select concat("'",replace(AccountNumber, ',', "','"),"'")
此数据来自SSRS报告,我无权访问该报告,否则我会在那里修改它。
事实证明,我的问题是,我只是在一行中出现了Replace语句,我没有将返回值设置为变量。所以一旦我添加
Set @AccntNo = CONCAT("'", Replace(....), "'");
语法错误消失了。但是@[Bernd Buffen]和@ysth做得对。