从SQL Server 2008 R2中的字符串中删除前导零

时间:2015-02-07 06:32:11

标签: sql-server string sql-server-ce

我有一个表示批号商品的字符串,例如" 0000AZA001B"。我只需要" AZA001B"部分。我怎样才能在SQL Compact中实现它?

2 个答案:

答案 0 :(得分:1)

使用以下语法修剪未知数量的前导零:

SELECT REPLACE(LTRIM(REPLACE(BatchNumber, '0', ' ')), ' ', '0')

这将使用空格替换字符串中的所有零,使用LTRIM函数修剪前导空格并将空格转换回零。

答案 1 :(得分:1)

有很多方法可以做到这一点..检查这个例子和链接。

declare @str varchar(50) = '0000AZA001B'

select 
    @str , 
    substring(@str, patindex('%[^0]%',@str), 10),
    REPLACE(LTRIM(REPLACE(@str, '0', ' ')), ' ', '0')

Removing leading zeroes from a field in a SQL statement

http://sqlmag.com/t-sql/trimming-leading-zeros

更新为SQL Compact版本 试试这个:

select CONVERT(BIGINT, REPLACE(LTRIM(REPLACE('000000000011070876', '0', ' ')), ' ', '0')) 

Convert from string with leading zeros to bigint in SQL Server CE isn't working

仍然需要进一步分析,你可以下载这个工具: - https://sqlcequery.codeplex.com/