【问题标题】:MYSQL: Formatting values of a column in the outputMYSQL:格式化输出中列的值
【发布时间】:2018-07-19 12:02:02
【问题描述】:

我有一个如下所示的表格:

id   name   value
123  name1  ,
345  name2  N/A
456  name3  ,value1

我希望我的输出是这样的

id   name   value
123  name1  undefined
345  name2  undefined
456  name3  value1

如果只是, 或N/A,那么输出应该是undefined 否则从value的开头替换,

Select id, name 
    (case when value regexp ',' then 'undefined'
          when value regexp 'N/A' then 'undefined'
        end) 

但是,它正在用价值 undefined 替换所有内容

【问题讨论】:

  • 您是否有理由需要使用regexp 而不是= 或LIKE?
  • 不,没有这样的原因

标签: mysql select join left-join inner-join


【解决方案1】:

假设,我们不关心替换值中的逗号。然后,用空字符串替换逗号,然后得到长度

LENGTH(REPLACE(value, ',', ''))=0

如果是0,那么值只有,。

Select id, name, 
    (case when value = 'N/A' then 'undefined'
          when LENGTH(REPLACE(value, ',', ''))=0 then 'undefined'
          else REPLACE(value, ',', '')
        end) value from <table_name>

【讨论】:

    【解决方案2】:

    简单的方法是:

    select id, name,
      case 
        when value in (',','N/A') then 'undefined'
        when value like ',%' then substring(value,2)
        else value 
      end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多