如何将表中逗号分隔字段转换为concat()函数调用语句?
解决方案:将逗号分隔字符串转换为CONCAT()调用语句
核心思路是通过字符串替换,把原字段里的逗号替换成 ',',,再拼接上concat(开头和)结尾,就能自动生成目标语句。
针对MySQL的实现
直接用REPLACE函数配合CONCAT拼接:
SELECT CONCAT('concat(', REPLACE(products, ',', ''',','''), ')') AS concat_call FROM table_product WHERE id = 1;
执行后,id=1的记录会返回:concat(tv,',',phone,',',tablet)
针对PostgreSQL的实现
语法类似,用字符串连接符||:
SELECT 'concat(' || REPLACE(products, ',', ''',','''') || ')' AS concat_call FROM table_product WHERE id = 1;
关于你之前的错误查询
你之前的写法select concat(select products from table_product where id=1) from table_sales是把整个逗号分隔的字符串作为concat的单个参数传入,相当于执行concat('tv,phone,tablet'),这和你想要的多参数concat调用完全不是一回事,所以会达不到预期效果。
内容的提问来源于stack exchange,提问作者Gulya
相关产品推荐
相关产品推荐

