【问题标题】:Query to replace a comma in SQL?查询以替换 SQL 中的逗号?
【发布时间】:2009-01-09 12:12:11
【问题描述】:

我有一张表格,其中包含员工、地址、城市、州和邮政编码列。我已将地址、城市、州、邮政编码合并到一列“地址”,用逗号分隔每个字段。

我的问题是,如果其中一个字段为空,则会插入一个额外的逗号。例如,如果city 为空,则结果值将类似于address,,state,zipcode。我需要删除这个额外的逗号。这个怎么做?请帮忙。

【问题讨论】:

  • -1:为什么要创建一个包含四个不同值的列?
  • 你为什么要这样做?通常,将多余的逗号留为空白实际上是有意义的(当它应该为空白时)

标签: sql


【解决方案1】:

您可以使用case when 构造

   ... = case when city is null then '' else city + ',' end

如果值已经在数据库中,您可以这样替换它:

   UPDATE tableX SET address= replace(address, ',,', ',')

执行N次,确保覆盖“所有字段都为空”的情况。

【讨论】:

  • 我很确定 REPLACE() 总是替换所有出现的。至少,它在 tSQL 和 MySQL 中是这样,我不确定它是否是普通 SQL 标准的一部分。
  • 是的,但是选择例如 select replace(',,,', ',,', ',') 会导致 ,,
【解决方案2】:

或者您可以在 php 中手动执行此操作

<?php

$str = 'address,,state,zipcode';

$str = preg_replace('/,{2,}/i', ',', $str);
echo $str;

?>

我相信你也可以用你的语言做到这一点

【讨论】:

    【解决方案3】:
    select replace(replace(replace(replace('LOKO, , , kkslksl  ',' ',''),',','<>'),'><',''),'<>',',') from dual
    

    【讨论】:

      【解决方案4】:

      在连接字符串以进行插入时使用替换:

      REPLACE('address,,state,zipcode', ',,' , ',' )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-20
        • 2020-05-08
        • 1970-01-01
        • 2016-04-19
        • 1970-01-01
        • 2014-03-26
        相关资源
        最近更新 更多