2016-09-24 24 views
0

我在我的sql表中有不同種類的條形碼。從數字中刪除所有開始的0

我從0開始例如

05212365489787 
0000000290098 
0000000000103 

條形碼我想從我的條碼刪除所有0開始。

結果舉例想:

5212365489787 
290098 
103 

我發現這個代碼:但我想更新它們:

select SUBSTRING(str_col, PATINDEX('%[^0]%', str_col+'.'), LEN(str_col)) from table1 

類似的東西

update table1 set Barcode =(SELECT SUBSTRING(Barcode, PATINDEX('%[^0 ]%', Barcode + ' '), LEN(Barcode)) FROM table1) 

,但我得到的錯誤子查詢返回了多個值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。

+0

化妝的數據類型爲整數,那麼所有的0將被自動忽略 – Naruto

+0

究竟只是將數據轉換爲'INT'或'BIGINT'取決於數據 –

+0

在這種情況下,標記重複中的接受答案將不起作用。 –

回答

1

這是一個簡單的修改,以接受答案中標有重複的question

select substring(barcode, patindex('%[^0]%', barcode), 
       len(barcode)) 

接受的答案有le 10的十分之一,這對這個問題是特別不正確的。

我會注意,由於條形碼是有限長度的,你也可以轉換爲十進制

select cast(barcode as decimal(38, 0)) 
1

只是CAST/CONVERT數據到INTBIGINT取決於數據,所有的前導零將通過這樣去除。由於前導零的數值,這意味着減少,所以當你convert的數據INTBIGINT前導零將被刪除

Select cast(Barcodes as BIGINT) as result 
From yourtable 

更新:

Update Yourtable 
    SET Barcodes = cast(Barcodes as BIGINT) 
Where Left(Barcodes,1) = '0' 
相關問題