【问题标题】:select a column value from a table only if it has a value assigned else insert a user defined value into that column [closed]仅当已分配值时才从表中选择列值,否则将用户定义的值插入该列[关闭]
【发布时间】:2015-12-09 09:25:13
【问题描述】:

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

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

我只想选择第 2 列字段值,如果它在 table1 中有一个值,否则我想在 P2 列中插入一个常量值。有人可以帮助我对此进行查询。

【问题讨论】:

  • 您不想在表中插入缺失值,而只想从中选择值,对吧?如果 column2 为空,您想为其显示默认值,是吗?
  • 请提供一些输入数据并提供您期望的数据(或)发布您尝试过的任何查询然后只有能够回答您的问题的人。
  • 您实际使用的是 MySQL 还是 SQL Server 这两个 DBMS 中的哪一个?请删除不适当的标签。
  • 是的@ThorstenKettner 你是绝对正确的,这就是我想问的。抱歉,我的措辞不够清楚。
  • 谢谢大家 :) 它对我有用。

标签: mysql sql sql-server


【解决方案1】:

COALESCE 是一个 SQL 函数,可让您将空值替换为其他值。例如:

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

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 2018-04-28
    • 2018-05-21
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多