我需要一个SQL查询,它返回下表中的ContactDate,SortName,City,ContactType和Summary。如果任何值为null,我需要它返回文本“No Entry”。
ContactTable
用户表
AddressTable
答案 0 :(得分:14)
SELECT COALESCE(CAST(CONVERT(VARCHAR(10), ContactTable.ContactDate, 101) AS VARCHAR(10)), 'No Entry') AS ContactDate,
COALESCE(ContactTable.SortName, 'No Entry') AS SortName,
COALESCE(AddressTable.City, 'No Entry') AS City,
COALESCE(ContactTable.ContactType, 'No Entry') AS ContactType
FROM ContactTable
LEFT OUTER JOIN UserTable ON ContactTable.UserID = UserTable.UserID
LEFT OUTER JOIN AddressTable ON UserTable.AddressID = AddressTable.AddressID
Here是上面CONVERT语句的SQL DateTime格式图表。
答案 1 :(得分:8)
COALESCE()在任何平衡的盐平台上。
确保处理施法问题。
如:
--(SQL Server)
SELECT
C.ContactID,
COALESCE(CAST(CONVERT(varchar(10), C.ContactDate, 101) AS varchar(10), 'No Entry') AS ContactDate,
COALESCE(SorName, 'No Entry') AS SortName
等等。
答案 2 :(得分:4)
SELECT
ISNULL(ContactDate, 'No Entry') AS ContactDate
FROM Table
使用ISNULL非常简单。
答案 3 :(得分:1)
此函数的Oracle版本称为nvl
。相同的用法 - SELECT nvl(col_name, desired_value) FROM foo
。
更常见的版本是decode
,它有三个参数,允许您指定要替换的列值(因此您可以将所有'Johnny'替换为'John'或其他内容)。
答案 4 :(得分:0)
使用' IIF '是Access数据库解决方案,但可以在其他数据库中使用。
SELECT IIF(IsNull(Foo), 'No Entry' ,Foo), IIF(IsNull(Bar), 'No Entry' ,Bar) From TableName
函数IIF返回2个值中的一个取决于表达式的评估 SQL语法: IIF(表达式,真值1,假值)
答案 5 :(得分:0)
您还可以为每列进行不同的调用。这将需要更多的单独调用,但如果您没有很多行要更新它可能会更快。
update ContactTable set ContactDate = 'No Entry' where ContactDate is null;
对每一列重复。