簡體   English   中英

選擇案例不按預期工作

[英]Select case not working as expected

我在select語句中有這個非常簡單的情況

   CASE WHEN PHONENR IS NOT NULL THEN '+46'+PHONENR ELSE ' ' END AS Phone 

我的問題在這里我可以正確地在所有現有數字前面添加國家代碼,但空行的默認值為+46而不是空

您可以使用

CASE WHEN PHONENR <> '' THEN '+46'+PHONENR ELSE ' ' END AS Phone 

僅當PHONENR不為空或空字符串時才輸入第一個分支。

請改用LEN

CASE WHEN LEN(PHONENR)>1 THEN ....

我建議尋找除了空格之外的值,並將國家代碼添加到這些值。 像這樣的東西:

(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 如果您有此約束,則原始查詢將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM