2015-06-02 143 views
0

我需要查找數據庫中以'0000'結尾的所有郵政編碼。使用以下查詢,我可以返回所有長度爲9位數的郵政編碼。但是,如何將返回的長度僅爲9位數的郵政編碼添加回去並且有0000?我確信這很簡單,但我仍然是新的查詢。 :)查詢以查找結尾'0000'的郵政編碼

例如:922340000

Select Addresszipcode 
from dbo.CR_MEMBER_AllMemberDetails 
where len(Addresszipcode) = 9 

回答

4
Select Addresszipcode 
from dbo.CR_MEMBER_AllMemberDetails 
where len(Addresszipcode) = 9 
and Addresszipcode like '%0000' 
+1

@DanField也不是你的。你有一個包裝列的函數,所以它會執行全表掃描。只有在表掃描的時候,它纔會是一個計算索引列。 – UnhandledExcepSean

+0

對,我意識到這一點。我認爲你的問題更容易解決,以使其變得可靠。我只是想到了我的第一件事。 –

+0

非常感謝Dan!我知道這很簡單,我錯過了!我感謝您的幫助! – Michelle

4
SELECT Addresszipcode 
FROM dbo.CR_MEMBER_AllMemberDetails 
WHERE LEN(AddressZipCode)= 9 AND RIGHT(AddressZipCode, 4) = '0000' 
0

您需要使用LEN() functionLIKE operator的組合。

SELECT Addresszipcode FROM dbo.CR_MEMBER_AllMemberDetails 
WHERE LEN(AddressZipCode)=9 AND AddressZipCode LIKE '%0000' 

WHERE子句將只與9長度返回行的LEN(AddressZipCode)一部分。 AddressZipCode LIKE '%0000'將僅返回以0000結尾的行。使用LIKE運算符時,百分號%充當通配符。本質上,你說的是「在哪裏AddressZipCode以任何東西開頭,並以0000結尾」。

編輯

在回答您的意見,這裏是修剪0年代SQL:

SELECT CASE WHEN LEN(AddressZipCode)=9 AND AddressZipCode LIKE '%0000' 
      THEN LEFT(AddressZipCode,5) ELSE AddressZipCode END AS AddressZipCode 
+0

@Michelle - 看看我更新的答案! – Icemanind

+0

謝謝你,你搖滾!我一直在學習! :) – Michelle

+0

@Michelle - 如果您需要更詳細的解釋這是如何工作的,請告訴我。 – Icemanind

相關問題