用单引号替换逗号
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 是对的。
我有一个参数正在传递给存储过程。参数值如下所示:
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 是对的。