仅当表中指定了值时才从表中选择列值,否则将用户定义的值插入该列

时间:2015-12-09 09:25:14

标签: mysql sql sql-server

我的要求是生成一个mysql查询

select ss.column1 P1,ss.column2 P2,ss.column3 P3 from table1 ss;

我想只在列表中有值时才选择第2列字段值,否则我想在P2列中插入一个常量值。有人可以帮我构建一个查询。

1 个答案:

答案 0 :(得分:1)

COALESCE是SQL函数,它允许您用其他东西替换空值。 E.g:

select 
  ss.column1 as p1,
  coalesce(ss.column2, 'no value') as p2,
  ss.column3 as p3 
from table1 ss;

但是数据类型必须匹配,因此当column2是文本列时,您可以使用上述内容。如果是数字,则可以使用数值替换null(例如,使用零)或者您将列转换为'数据类型。

一些例子:

coalesce(mytext, 'unknown')
coalesce(mynumber, 0)
coalesce(cast(mynumber as varchar), 'unknown')
coalesce(mydate, date(now()))
coalesce(date_format(mydate, '%Y-%m-%d'), 'unknown')