MYSQL:格式化输出中列的值

MYSQL:格式化输出中列的值,mysql,select,join,left-join,inner-join,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,那么输出应该是未定义的 否则,从值的开头替换, Select id, name (case when value regex

我有一张表,如下所示:

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
,那么输出应该是
未定义的
否则,从
值的开头替换

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

但是,它将所有内容替换为value
未定义的

假设我们不关心替换value中的逗号。然后,将逗号替换为空字符串,然后获取长度

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>
选择id、名称、,
(当值='N/A'然后是'undefined'时的情况)
当长度(替换(值“,”和“))=0时,则为“未定义”
else替换(值“,”,“”)
结束)来自的值

最简单的方法是:

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

是否有理由需要使用
regexp
而不是
=
或类似的
方法?没有理由