and*_*ter 10 sql sql-server-2005
我正在运行一个非常简单的查询,但是对于某些结果,一个字段中的值为null.如果值为null,如何将该值设置为"字符串"?
就像是
SELECT RegName,
RegEmail,
RegPhone,
RegOrg,
RegCountry,
DateReg,
(Website IS NULL? 'no website' : Website) AS WebSite
FROM RegTakePart
WHERE Reject IS NULL
Run Code Online (Sandbox Code Playgroud)
它将在sql server 2005上运行
谢谢
Gia*_*los 26
使用以下内容:
SELECT RegName,
RegEmail,
RegPhone,
RegOrg,
RegCountry,
DateReg,
ISNULL(Website,'no website') AS WebSite
FROM RegTakePart
WHERE Reject IS NULL
Run Code Online (Sandbox Code Playgroud)
或者,@ Lieven指出:
SELECT RegName,
RegEmail,
RegPhone,
RegOrg,
RegCountry,
DateReg,
COALESCE(Website,'no website') AS WebSite
FROM RegTakePart
WHERE Reject IS NULL
Run Code Online (Sandbox Code Playgroud)
COALESCE的动态是你可以定义更多的参数,所以如果第一个是null然后得到第二个,如果第二个是null得到第三个等等...
如上所述,聚结溶液是优选的。作为一个额外的好处,您可以对“派生”值与选定值使用合并,如下所示:
SELECT
{stuff},
COALESCE( (select count(*) from tbl where {stuff} ), 0 ) AS countofstuff
FROM
tbl
WHERE
{something}
Run Code Online (Sandbox Code Playgroud)
使用“iif”或“case”,您需要重复内联,而使用coalesce则不需要,它允许您避免在该返回中出现“null”结果......
用途CASE:
SELECT regname,
regemail,
regphone,
regorg,
regcountry,
datereg,
CASE
WHEN website IS NULL THEN 'no website'
ELSE website
END AS WebSite
FROM regtakepart
WHERE reject IS NULL
Run Code Online (Sandbox Code Playgroud)
或者COALESCE:
....
COALESCE(website, 'no website') AS WebSite
....
Run Code Online (Sandbox Code Playgroud)