根据条件替换字符串sql的一部分

ajsxfq5m  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(430)

我在amazon redshift中有一个用例,在一列中有一个数字列表:例如: 1,2,3,4,5,6 对于这个用例,数字必须在同一列中。假设我想传递一个参数并从列表中删除这个数字。我想做的是:

IF FIRST ENTRY THEN
update table set number = replace(number,'{0},','') where 
username = '{1}';
ELSE
update table set number = replace(number,',{0}','') where 
username = '{1}';
END IF;

所以基本上我试着从列表中删除这个数字。问题是删除第一个数字,因为该数字前面没有逗号。如果是第一个条目,如何删除数字+逗号,如何删除所有其他条目的逗号+数字?
谢谢你的帮助

relj7zay

relj7zay1#

您可以在字符串的开头和结尾加上',,然后替换“{0}”的出现次数
在此之后,替换任何尾随或前导逗号。。。
如:

--First append a ',' to the start and end of the column "number". 
update table 
   set number = replace(concat(',',number,','),'{0},','') 
 where username = '{1}';

--Replace any leading or trailing commas...
update table 
   set number = btrim(number,',') 
 where username = '{1}';

相关问题