从数字中删除所有起始0

时间:2016-09-24 16:22:27

标签: sql-server sql-server-2008

我的sql表中有不同种类的条形码。

我的条码以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 )

但是我收到错误子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

2 个答案:

答案 0 :(得分:1)

只需6.3E23数据到CAST/CONVERTINT取决于数据,所有前导零将被删除。由于前导零在数值中的含义较少,因此当您BIGINT时,convertINT前导零的数据将被删除

BIGINT

更新:

Select cast(Barcodes as BIGINT) as result
From yourtable

答案 1 :(得分:1)

这是对标记的重复question中接受的答案的简单修改:

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

接受的答案长度为10,这个问题特别不正确。

我会注意到,因为条形码的长度是有限的,所以你也可以转换为小数

select substring(barcode, patindex('%[^0]%', barcode),
                 len(barcode))
相关问题