2016-08-11 27 views
0
t0212_1 t0212_2 
884999999 GCP-9  Company A 
8849999 GCP-7  Company B 

@val = 884999999 

這裏是我的查詢:SQL無效的數據顯示

Select * Company 
WHERE t0212_1= (LEFT(CONVERT(BIGINT,@val),convert(int,substring('GCP-9',5,2)))) OR 
     t0212_1= LEFT(CONVERT(BIGINT,@val),convert(int,substring('GCP-7',5,2))) 

當我搜索8849999,8849999節目(這是正確的)。

當我搜索884999999時,884999999顯示(這是右)和8849999顯示(錯誤)。

做什麼,請幫助

謝謝, 如果你不理解我的解釋很簡短,您可以在驗證我。

+2

你至少可以嘗試格式化你的問題?現在它幾乎不可讀。 – DavidG

+0

你能否再次檢查它 –

+0

convert(int,substring('GCP-9',5,2))意味着我只需要得到9位數,因爲這個存儲過程正在接受884999999 +(校驗位)= 8849999990002,My問題是它也涉及到8849999(7位與884999999差不多) –

回答

0

您的篩選要麼來自輸入的7個或9個字符(DECLARE @val INT = 884999999) 應與列(t0212_1)的值匹配。

根據你的過濾器,你會得到兩個記錄,因爲你的過濾符合兩個記錄。

您可以使用此SQL

SELECT * 
FROM @Company 
WHERE t0212_1 = (LEFT(CONVERT(BIGINT, @val), convert(INT, substring(t0212_2, 5, 2)))) 
+0

https://shrib.com/h4QYC4H5okZKqO0,繼承我存儲過程的鏈接,我正在使用方法「GTIN」 –