我在互联网上发现以下查询从“ - ”吐出数据。 我只想在“ - ”之后获得价值,我怎么能实现这一目标。而且我还需要该值的最大值
任何人都可以帮助我。
SELECT
LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) AS Certs
FROM
(
SELECT CAST('<XMLRoot><RowData>' + REPLACE(BATCH_NO,'-','</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) AS x
FROM BATCH
)BATCH
CROSS APPLY x.nodes('/XMLRoot/RowData')m(n)
样本数据
Batch_NO
----------------
30-002
30-002
001-003
输出
-------------
30
002
30
002
001
003
答案 0 :(得分:1)
您需要在INT
方法中使用value
或任何数值数据类型,而不是varchar
数据类型
SELECT Max(m.n.value('.[1]', 'INT')) AS Certs
FROM (SELECT Cast('<XMLRoot><RowData>'
+ Replace(BATCH_NO, '-', '</RowData><RowData>')
+ '</RowData></XMLRoot>' AS XML) AS x
FROM (VALUES ( '30-002'),
('30-002'),
('001-003')) tc (batch_no))BATCH
CROSS APPLY x.nodes('/XMLRoot/RowData')m(n)
答案 1 :(得分:0)
我需要“ - ”的值,并使用以下代码执行。
感谢每一位帮助我的人。
select MAX(RIGHT(BATCH_NO, charindex('-',REVERSE(BATCH_NO))-1)) AS BATCH_NO FROM BATCH