我需要查找數據庫中以'0000'結尾的所有郵政編碼。使用以下查詢,我可以返回所有長度爲9位數的郵政編碼。但是,如何將返回的長度僅爲9位數的郵政編碼添加回去並且有0000?我確信這很簡單,但我仍然是新的查詢。 :)查詢以查找結尾'0000'的郵政編碼
例如:922340000
Select Addresszipcode
from dbo.CR_MEMBER_AllMemberDetails
where len(Addresszipcode) = 9
我需要查找數據庫中以'0000'結尾的所有郵政編碼。使用以下查詢,我可以返回所有長度爲9位數的郵政編碼。但是,如何將返回的長度僅爲9位數的郵政編碼添加回去並且有0000?我確信這很簡單,但我仍然是新的查詢。 :)查詢以查找結尾'0000'的郵政編碼
例如:922340000
Select Addresszipcode
from dbo.CR_MEMBER_AllMemberDetails
where len(Addresszipcode) = 9
Select Addresszipcode
from dbo.CR_MEMBER_AllMemberDetails
where len(Addresszipcode) = 9
and Addresszipcode like '%0000'
SELECT Addresszipcode
FROM dbo.CR_MEMBER_AllMemberDetails
WHERE LEN(AddressZipCode)= 9 AND RIGHT(AddressZipCode, 4) = '0000'
您需要使用LEN() function和LIKE 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
@DanField也不是你的。你有一個包裝列的函數,所以它會執行全表掃描。只有在表掃描的時候,它纔會是一個計算索引列。 – UnhandledExcepSean
對,我意識到這一點。我認爲你的問題更容易解決,以使其變得可靠。我只是想到了我的第一件事。 –
非常感謝Dan!我知道這很簡單,我錯過了!我感謝您的幫助! – Michelle