提问者:小点点

替换不存在的另一列中的值


我有两列:

column_a                column_b
www.de.google.com/best  best
www.fr.google.com/free  free
www.google.com/fr/best  NULL

我已经编写了一个regexp来创建column_b,但是,如果column_a中的链接在.com之后有本地化,这个regexp不会创建结果。 现在我想用case向第三行添加值best

CASE 
    WHEN column_a LIKE '%best%' THEN 'best'
    WHEN column_b LIKE '%free%' THEN 'free'
END AS type_2

这将创建另一列type2,结果如下所示:

column_a                column_b    type_2
www.de.google.com/best  best        best
www.fr.google.com/free  free        free
www.google.com/fr/best  NULL        best

我希望我的结果是这样的:

column_a                column_b    
www.de.google.com/best  best        
www.fr.google.com/free  free        
www.google.com/fr/best  best       

如果case语句没有值,我如何编写该语句来填充column_b中的空白,而不创建另一列呢?


共1个答案

匿名用户

UPDATE UrTableName
SET column_b =
 CASE 
  WHEN column_a LIKE '%best%' THEN 'best'
  WHEN column_a LIKE '%free%' THEN 'free'
 END
 WHERE column_b IS NULL

差不多吧。 请注意,我使用的是MS_SQL语法。 对于MySql,它可能不同,但逻辑是存在的