34,590
社区成员
发帖
与我相关
我的任务
分享
select reverse(convert(nvarchar(50),convert(int,reverse(v)))) from
(select '1000000000000000000' as v union all
select '1010000000000000000' as v union all
select '1010100000000000000' as v union all
select '1010101000000000000') a
--先反转,转类型,再反转就可以了.这样应该效率会高一些.
select REVERSE(CAST(REVERSE(v) AS BIGINT))
from
(
select '1000000000000000000' as v union all
select '1010000000000000000' as v union all
select '1010100000000000000' as v union all
select '1010101000000000000'
)v
/*
1
101
10101
1010101
*/
select reverse(substring(reverse(v),patindex('%[1-9]%',reverse(v)),len(v)))
from
(
select '1000000000000000000' as v union all
select '1010000000000000000' as v union all
select '1010100000000000000' as v union all
select '1010101000000000000'
)v