我想写一个查询,当一列包含 Mike 时返回一个新列,它返回 1;当列不包含 Mike 时,它返回 0。我使用的是 PostgreSQL。
之前:
名字 | 姓氏 | name_name |
---|---|---|
迈克 | 博戈 | 约翰逊 |
大卫 | 迈克 | 营地 |
迈克 | 亨德森 | 鲍嘉 |
迈克 | 罐子 | 丹佛 |
斯蒂芬 | 达拉斯 | 佩恩 |
查询后应该显示
名字 | 姓氏 | name_name | new_column |
---|---|---|---|
迈克 | 博戈 | 约翰逊 | 1 |
大卫 | 迈克 | 营地 | 1 |
尼尔 | 亨德森 | 鲍嘉 | 0 |
迈克 | Jart | 丹佛 | 1 |
斯蒂芬 | 达拉斯 | 佩恩 | 0 |
答案 0 :(得分:0)
这可以使用 CASE 表达式来完成
select first_name, last_name, name_name,
case
when 'Mike' in (first_name, last_name) then 1
else 0
end as new_column
from the_table;
不过,我更喜欢适当的布尔列(带有真/假):
select first_name, last_name, name_name,
'Mike' in (first_name, last_name) as new_column
from the_table;