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

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

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

  1. IF FIRST ENTRY THEN
  2. update table set number = replace(number,'{0},','') where
  3. username = '{1}';
  4. ELSE
  5. update table set number = replace(number,',{0}','') where
  6. username = '{1}';
  7. END IF;

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

relj7zay

relj7zay1#

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

  1. --First append a ',' to the start and end of the column "number".
  2. update table
  3. set number = replace(concat(',',number,','),'{0},','')
  4. where username = '{1}';
  5. --Replace any leading or trailing commas...
  6. update table
  7. set number = btrim(number,',')
  8. where username = '{1}';

相关问题