mysql语句,去除字段首尾的“|”,替换字段中间的“|”为“,”。这个字段不是所有值要替换

图片说明

表名是article 需要修改的字段为keywords , 将 “|魅力芜湖|文物保护|委员会|”改为“魅力芜湖,文物保护,委员会”.然后keywords 这个字段 有些值本身就是 “国内,新闻”这种值,不需要改。
请问我该怎么写。 用 trim ?然后replace 具体怎么写我不知道,希望大神来帮助!

UPDATE article SET keywords= REPLACE ( keywords, '| ', ',' );

再删除首位的|,用substring,UPDATE article SET keywords= substring ( keywords, 1,length(keywords)-1 );

UPDATE article SET keywords=RIGHT(keywords,len(keywords)-1)
WHERE keywords LIKE '|%' ;

UPDATE article SET keywords=LEFT(keywords,LEN(keywords)-1)
WHERE keywords LIKE '%|';

UPDATE article SET keywords=REPLACE(keywords,'|',',')

UPDATE article SET keywords=RIGHT(keywords,len(keywords)-1)
WHERE keywords LIKE '|%' ;  -- 去掉左边的‘|’

UPDATE article SET keywords=LEFT(keywords,LEN(keywords)-1) 
WHERE keywords LIKE '%|';   -- 去掉右边的‘|’

UPDATE article SET keywords=REPLACE(keywords,'|',',')   -- 把中间的‘|’替换成‘,’

下面的解决方案应该比较适合你:

 #去除首尾指定字符","
select TRIM(BOTH ',' FROM B.strA) as strB from (
#先将所有的"|"换成","
select REPLACE(A.str,"|",",") as strA from 
(select '|a|b|c|d|e,f,g|' as str from dual) A
)B;

#你也可以缩减成一条语句,即是
select TRIM(BOTH ',' FROM 
                REPLACE('|a|b|c|d|e,f,g|', "|", ",")
) as str from dual;

我觉得你可以把所有的|换成,,然后再把首尾的逗号删除,我SQL学的不多,这是我理解的方法不知道可不可以实现