首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Server中包含字符的序列号字段中查找MAX()

从Server中包含字符的序列号字段中查找MAX()
EN

Stack Overflow用户
提问于 2018-12-11 08:30:20
回答 3查看 554关注 0票数 0

我的表有一个列p_no VARCHAR(50) NOT NULL来存储序列号。序列号的格式是"XXX/0000/18/DEPT""XX/0001/18/DEPT"。我想检索序列号中的整数以生成另一个序列号。有人能帮忙吗?

这是我从一开始就被卡住的代码

代码语言:javascript
复制
SELECT CASE 
WHEN SUBSTRING(p_no,0,3) = 'XXX' THEN MAX(SUBSTRING(p_no,4,4)) 
WHEN SUBSTRING(p_no,0,3) = 'XX' THEN MAX(SUBSTRING(p_no,3,4))
END
FROM tbl_project
GROUP BY SUBSTRING(p_no,0,4)

如果值为"XXX/0000/18/DEPT""XX/0001/18/DEPT",则预期结果为"XX/0001/18/DEPT"

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-11 08:43:53

使用下面的值作为整数转换(INT,SUBSTRING(p_no,CHARINDEX('/',p_no,0) + 1,4))

由于您需要Max,所以可以使用MAX(转换(INT,SUBSTRING(p_no,CHARINDEX('/',p_no,0) + 1,4)

票数 1
EN

Stack Overflow用户

发布于 2018-12-11 08:37:57

您可以使用charindex查找/的第一个位置,如果序列号的第二部分是固定的,即等于4,这似乎是正确的,那么您可以应用substring检索它:

代码语言:javascript
复制
select serialNo,
       substring(serialNo, charindex('/', serialNo) + 1, 4)
from (
  values ('XXX/0000/18/DEPT'),('XX/0001/18/DEPT')
) a(serialNo)
票数 1
EN

Stack Overflow用户

发布于 2018-12-11 08:50:37

如果要查找MAX值,则不需要对它们进行分组:

代码语言:javascript
复制
DECLARE @temp TABLE
(
    p_no NVARCHAR(50)
);

INSERT INTO @temp
(
    p_no
)
VALUES
('XXX/0000/18/DEPT'),
('XX/0001/18/DEPT');

SELECT 
MAX( SUBSTRING(t.p_no, charindex('/', t.p_no)+1, 4))
FROM @temp t

输出:

代码语言:javascript
复制
0001
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53720142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档