我想知道这样的事情是否可行:
SELECT name or alt_name FROM users Where userid=somenum
我也试过这个:
SELECT name IF NOT NULL ELSE alt_name ...
如果有人有任何见解我会很感激。
答案 0 :(得分:7)
如果您尝试替换空值,那么
select coalesce(name,alt_name)....
它将返回第一个非空值
答案 1 :(得分:2)
这个怎么样?
SELECT IsNull(name, alt_name) FROM users Where userid=somenum
它类似于Coalesce函数,但它只需要两个参数并且更容易拼写。
答案 2 :(得分:1)
SELECT CASE WHEN [name] IS NOT NULL THEN [name] ELSE [alt_name] END AS [UserName]
FROM [Users] WHERE [UserId] = somenum
答案 3 :(得分:0)
不是最有效的答案,但是这个:
SELECT name FROM users WHERE userid=somenum AND name IS NOT NULL
UNION
SELECT altname FROM users WHERE userid=somenum AND name IS NULL
我认为这会产生你想要的东西。
答案 4 :(得分:0)
如果您正在使用支持它们的数据库,那么最简单的方法之一就是使用用户定义的函数,然后您就拥有了
SELECT udfPreferredName() FROM users
其中udfPreferredName()
将封装在name和alternative_name字段之间进行选择所需的逻辑。
使用函数的一个优点是,您可以抽象出选择逻辑,并将其应用于您需要的任何地方的多个SQL语句中。使用案例进行内联逻辑很好,但在整个系统中维护通常会非常困难。在大多数RDBMS中,除非处理非常大的表
,否则函数调用的额外开销不会很大答案 5 :(得分:0)
选择案例 当userid = somenum那么名字 ELSE alt_name 结束 来自用户