我有一个返回ID的查询。
SELECT Id from MyTable;
结果是这样的:
2400044
243000178
12300044
现在我想只在000(三个零)的右侧获得数字。
所以:
44
178
44
答案 0 :(得分:2)
当没有找到000匹配时返回原始数字,它将找到第一次出现000并在此之后返回该数字:
DECLARE @t table(a int)
INSERT @t
values(2400044),(243000178),(12300044),(10002000)
SELECT a%(power(10,len(a)-charindex('000',a)))
FROM @t
这要求数字是实际的整数或bigint。带有非数字字符(0-9)的浮点数或varchar将失败
答案 1 :(得分:1)
使用CHARINDEX()和SUBSTRING()
的解决方案SELECT SUBSTRING([Id], CHARINDEX('000', [Id])+3, LEN([Id]))
FROM MyTable
答案 2 :(得分:0)
使用SUBSTRING
和CHARINDEX
功能,如下所示:
DECLARE @myNumber VARCHAR(50)='2400057744'
SELECT REVERSE(SUBSTRING(REVERSE(@myNumber),0,CHARINDEX('000',REVERSE(@myNumber))))
输出:
2400044 to 44
243000178 to 178
12300044 to 44
200030004 to 4
以表格形式
SELECT a Raw, REVERSE(SUBSTRING(REVERSE(a), 0, CHARINDEX('000', REVERSE(a)))) Number
from ( values (2400044), (243000178), (12300045), (2430001789), (2430033), (20003000101)
) k(a)
答案 3 :(得分:0)
使用patindex()
和substring()
功能获取右侧值
select
substring(Id, patindex('%[0][0][0]%', Id)+3, len(Id)) Id
from MyTable
答案 4 :(得分:0)
假设ID是INT或BIGINT,返回5位或更少:
create table #MyTable (Id int)
Insert Into #MyTable Values (2400044), (243000178), (12300044)
select id%100000 from #MyTable
如果是字符串:
Select Cast(Cast(id as bigint)%100000 as varchar(10)) from #MyTable