到此为止。我要提前道歉,因为我绝不是一个sql大师(甚至是菜鸟)。我有一个格式如下的表:
Community Number Street Address Street Name Unit Number Account Number
123 5432 Oak Street Null 1
123 5433 Oak Street Null 2
234 456 Cypress Lane C12 3
.
.
.
我想创建一个包含街道地址,名称和单元号的文件夹。如果没有单元号,只需创建街道地址文件夹。
文件夹的内容如下:
5432 Oak Street
5433 Oak Street
456 Cypress Lane #C12
这是我到目前为止我的select语句所具有的,它在前两个地址上运行得很好。我不知道该怎么做才有单位号码。我猜是有某种If THEN ELSE类型检查单元字段中是否有数据,如果有,请将单元号附加到地址。如果没有,只需使用地址和街道。
SELECT DISTINCT CAST([Street Address] as nvarchar(80)) + ' ' + [Street Name] as Address
我正在寻找一个语句来评估单元号字段是否为空或包含数据,然后从SELECT语句中传递正确的信息......
非常感谢任何帮助。
谢谢
答案 0 :(得分:0)
使用CASE
表达式:
SELECT DISTINCT CAST([Street Address] as nvarchar(80)) +
' ' + [Street Name] +
CASE WHEN [Unit Number] IS NULL
THEN ''
ELSE '#' + CAST([Unit Number] as nvarchar(10))
END as Address
答案 1 :(得分:0)
使用isNull(a, b)
函数,它接受两个参数,如果不是null,则返回第一个参数;如果第一个参数为null,则返回第二个参数。
SELECT DISTINCT [Street Address] + ' ' + [Street Name] +
isnull(' ' + [Unit Number], '') as Address
答案 2 :(得分:0)
当您连接多个列并且这些列中的任何列都是Nullable列时,最好在它们列上使用use ISNULL()
或COALESCE()
函数以避免最终连接值中出现意外的null值。
SELECT
ISNULL(CAST([Street Address] as nvarchar(80)) + ' ' ,'')
+ ISNULL(CAST([Street Name] as nvarchar(80)) + ' ' ,'')
+ ISNULL(CAST([Unit Number] as nvarchar(80)) ,'') AS [Address]
FROM Table_Name