【问题标题】:MySQL - Replace NULL or empty with 0000MySQL - 用 0000 替换 NULL 或空
【发布时间】:2016-02-22 09:30:28
【问题描述】:

我尝试用字符串 0000 替换空值

SELECT customer_id
FROM customer c 
LEFT JOIN user u ON u.idc = c.id
WHERE deleted = 0

我试试

IFNULL(c.customer_id,'0000')

COALESCE(c.customer_id,'0000')

REPLACE(c.customer_id,'','0000')

但不工作。

结果应该是:

(Before)    (After)
null        0000
1234        1234
            0000

我该怎么办?

【问题讨论】:

  • COALESECE() 应该完成这项工作。你能发布一些示例数据吗?
  • 表中的数据是什么?查询看起来不错
  • @TimBiegeleisen 我更新示例数据。
  • @PathikVejani 应该相同,但在我的情况下不返回 0000 它返回空字段

标签: mysql string


【解决方案1】:

使用内联 IF 检查 null 和空字符串,如果存在则返回 '0000'

SELECT IF(customer_id='' OR customer_id IS NULL,'0000',customer_id)
FROM customer c 
LEFT JOIN user u ON u.idc = c.id
WHERE deleted = 0

【讨论】:

  • 这对我来说既简单又方便,就像@h2ooooooo 的回答一样 :)
【解决方案2】:
SELECT CASE 
WHEN customer_id ='' THEN replace(customer_id,' ','0000')
WHEN customer_id is null THEN replace (customer_id,null,'0000')
end AS customer_id
FROM customer c 
LEFT JOIN user u ON u.idc = c.id
WHERE deleted = 0

【讨论】:

    【解决方案3】:

    您可以像这样先检查是否为空:

    SELECT case when customer_id='' then '0000' else COALESCE(c.customer_id,'0000') end 
    FROM customer c 
    LEFT JOIN user u ON u.idc = c.id
    WHERE deleted = 0
    

    【讨论】:

    • 我没有对你投反对票,但我怀疑原因是 OP 基本上已经在使用你的查询,但仍然没有得到想要的结果。
    【解决方案4】:

    如果你有空值和空字符串,那么你需要结合coalesce() 和字符串替换:

    SELECT if(coalesce(customer_id,'0000')='','0000',coalesce(customer_id,'0000')) as customer_id
    FROM customer c 
    LEFT JOIN user u ON u.idc = c.id
    WHERE deleted = 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多