用case创建一个新的MySQL列

时间:2013-05-22 19:20:19

标签: mysql case

我是SQL新手,我正在尝试使用其他列的值创建新列。

我正在使用这样的东西。

Select 
a.idclientecrm,
(case
when a.titulo like '%Mensual'       then 'Mensual'
when a.titulo like '%Trimestral'    then 'Trimestral'
when a.titulo like '%Semestral'     then 'Semestral'
when a.titulo like '%Anual'         then 'Anual'
else null
end) as Periodo_Producto
from tareas a

当我在 a.titulo 中找到 Mensual 这个词时,我需要在新专栏中使用“Mensual”这个词,依此类推每个不同的时间段( trimestral semestral anual )。

“喜欢”部分似乎不起作用,我也尝试使用包含,但我也无法使其正常工作。

希望这是可以理解的。

3 个答案:

答案 0 :(得分:3)

比较字符串末尾(以及开头)需要一个'%'符号来进行比较以检查字符串中的任何位置 - 此时它只检查字符串结束带有时间段的单词。尝试:

Select 
a.idclientecrm,
(case
when a.titulo like '%Mensual%'       then 'Mensual'
when a.titulo like '%Trimestral%'    then 'Trimestral'
when a.titulo like '%Semestral%'     then 'Semestral'
when a.titulo like '%Anual%'         then 'Anual'
end) as Periodo_Producto
from tareas a

(此外,else null是不必要的 - 默认情况下,case在没有匹配条件的情况下返回null。)

答案 1 :(得分:2)

%放在String

的两端
   Select 
    a.idclientecrm,
    (case
    when a.titulo like '%Mensual%'       then 'Mensual'
    when a.titulo like '%Trimestral%'    then 'Trimestral'
    when a.titulo like '%Semestral%'     then 'Semestral'
    when a.titulo like '%Anual%'         then 'Anual'
    else null
    end) as Periodo_Producto
    from tareas a

答案 2 :(得分:0)

两端使用%。

试试这个:

Select 
a.idclientecrm,
(case
when a.titulo like '%Mensual%'       then 'Mensual'
when a.titulo like '%Trimestral%'    then 'Trimestral'
when a.titulo like '%Semestral%'     then 'Semestral'
when a.titulo like '%Anual%'         then 'Anual'
else null
end) as Periodo_Producto
from tareas a

这是fiddle

希望这可以根据您的需要使用。谢谢!