我的选择陈述中有这个非常简单的案例
CASE WHEN PHONENR IS NOT NULL THEN '+46'+PHONENR ELSE ' ' END AS Phone
我的问题在这里我可以正确地在所有现有数字前面添加国家代码,但是空行的默认值为+46而不是仅为空
答案 0 :(得分:5)
您可以使用
CASE WHEN PHONENR <> '' THEN '+46'+PHONENR ELSE ' ' END AS Phone
仅当PHONENR不为空或空字符串时才输入第一个分支。
答案 1 :(得分:4)
使用LEN代替
CASE WHEN LEN(PHONENR)>1 THEN ....
答案 2 :(得分:3)
我建议寻找除了空格之外的值,并将国家/地区代码添加到这些值。像这样:
(case when phonenr like '%[^ ]%' then '+46' + PHONENR
else ''
end)
即,如果电话号码包含非空格字符,则附加国家/地区代码。
您甚至可以更进一步,只在电话号码至少有一位数字时附加国家/地区代码:
(case when phonenr like '%[0-9]%' then '+46' + PHONENR
else ''
end)
让我更进一步。将数据放入数据库时,可以使用check
约束来验证数据。我建议使用检查约束来验证电话号码的结构 - 例如,它只包含一组字符或NULL
值:
alter table add constraint chk_phonenr check (phonenr not like '%[^-0-9()+ ]%' and phonenr like '%[0-9]%')
这将确保该字段具有合理的值或NULL
。如果您有此约束,则原始查询将起作用。