Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 获取我的Id的右侧号码_Sql Server - Fatal编程技术网

Sql server 获取我的Id的右侧号码

Sql server 获取我的Id的右侧号码,sql-server,Sql Server,我有一个返回ID的查询 SELECT Id from MyTable; 结果是这样的: 2400044 243000178 12300044 现在我只想得到000右边的数字(三个零) 因此: 使用SUBSTRING和CHARINDEX函数,如下所示: DECLARE @myNumber VARCHAR(50)='2400057744' SELECT REVERSE(SUBSTRING(REVERSE(@myNumber),0,CHARINDEX('000',REVERSE(@myNumber

我有一个返回ID的查询

SELECT Id from MyTable;
结果是这样的:

2400044
243000178
12300044
现在我只想得到000右边的数字(三个零)

因此:


使用
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)
使用
patindex()
substring()
函数获取右侧值

select 
      substring(Id, patindex('%[0][0][0]%', Id)+3, len(Id)) Id
from MyTable
使用CHARINDEX()和子字符串()的解决方案


如果在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。如果ID为INT或BIGINT,则带有非数字字符(0-9)的Float或varchar将失败

,返回值不超过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

使用
RIGHT
function该怎么办:“200030004”?如果没有“000”怎么办?目标数字是否可以超过3。ID是整数还是字符?是否可以按照其他人的建议向问题中添加更多数据,以测试20003000101的代码。output将返回101如果数字为100012345@t-克劳森,谢谢。我没想到会有5位数。我已经调整了,将1000改为100000。但这不是通用的…)1000123456将返回23456。似乎有点arbitrary@plaidDK这是一种“攻击”。你的语感和我的不同。如果Id为和整数,则不起作用。但可以强制转换为整数。如果在000上找不到匹配项,则返回数字。也许这就是OP想要的。@狗仔队你说得对,我把我的剧本从以前的版本改了。更正了评论
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