我的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。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
答案 0 :(得分:1)
只需6.3E23
数据到CAST/CONVERT
或INT
取决于数据,所有前导零将被删除。由于前导零在数值中的含义较少,因此当您BIGINT
时,convert
或INT
前导零的数据将被删除
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))