有5列地址数据.我需要将这些字段连接成一个地址,如果它们存在,则在值之间有空格.如果列具有空值,我应该跳过它而不输入任何空格.
select
case
when street_number != '' THEN (cast(street_number as int))
end as street_number,
case
when street_ext != '' then
case
when street_ext = 50 then '1/2'
end
end as street_ext,
case
when street_direct ! = '' then street_direct
end as street_direct,
case
when site_street ! = '' then site_street
end as site_street,
case
when site_address ! = '' then site_address
end as site_address
from parcel
Run Code Online (Sandbox Code Playgroud)
我想要做的是有一个变量,并将其分配给第一列street_number的值,然后当我移动到下一列,street_ext,如果它不为null我想检查是否变量为null,如果没有,则追加一个空格和值...等等.
我生气了,可以用正确的方向推动.
感谢大家.
OMG*_*ies 27
使用"+"连接TSQL中的字符串:
SELECT CASE
WHEN LEN(p.street_number) > 0 THEN p.street_number + ' '
ELSE ''
END +
CASE
WHEN p.street_ext = 50 THEN '1/2'
WHEN LEN(p.street_ext) > 0 THEN ''
ELSE p.street_ext
END + ' ' +
CASE
WHEN LEN(p.street_direct) > 0 THEN p.street_direct + ' '
ELSE ''
END +
CASE
WHEN LEN(p.site_street) > 0 THEN p.site_street + ' '
ELSE ''
END +
CASE
WHEN LEN(p.site_address) > 0 THEN p.site_address + ' '
ELSE ''
END AS full_address
FROM PARCEL p
Run Code Online (Sandbox Code Playgroud)
该LEN函数返回零如果字符串值是NULL,或一个零长度的字符串.
嵌套的isnulls可以做你需要的.就像是:
SELECT
ISNULL(streetnumber + ' ', '')
+ ISNULL(streetext + ' ', '')
etc
Run Code Online (Sandbox Code Playgroud)
依赖于NULL +''= NULL的事实.
类似的东西:
select coalesce(street_number+' ','')+
coalesce(case when street_ext=50 then '1/2' else null end+' ','')+
coalesce(street_direct+' ','')+
coalesce(site_street+' ','')+
coalesce(site_address,'')
from parcel
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27721 次 |
| 最近记录: |