1

我是 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”一词,依此类推,以用于每个不同的时间段(triestralsemestralanual)。

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

希望可以理解。

4

3 回答 3

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。)

于 2013-05-22T19:26:44.227 回答
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
于 2013-05-22T19:25:33.737 回答
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

这是一个小提琴

希望这可以根据您的需要进行。谢谢!

于 2013-05-22T19:38:07.350 回答