MYSQL:格式化输出中列的值

时间:2018-02-08 19:46:06

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

我的表格如下所示:

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

替换所有内容

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

简单的方法是:

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