[英]Adding up the numeric parts of a matched string in SQL
这很难解释,所以我将尝试演示,这些都是在MS SQL存储过程中完成的。
我有一个记录清单
我有一个脚本,该脚本当前将记录转换为:
2x 10个foos + 15个foos + 3x 35 bahs + 98 foobahs + 2x 99foobahs + 2x Geoff + Brain + 2x James 99 + James
我需要做的是将所有相似的记录加起来,其中ree是字符串开头的数值,导致
35个foos + 105个foos + 296个foobahs + 2个Geoff + Brain + 2个James 99 + James
SELECT Name, SUM(Quantity) FROM @tableVar GROUP BY Name
随时问是否有不清楚的地方
最好拆分数字和项目,然后将它们存储在表中作为单独的列。 在SQL Server中,字符串操作不好。 话虽如此,您可以尝试以下查询
此查询将值分为数字和项目,然后将相似的项目求和并将它们合并为单个值。 很难看,但希望能用
;WITH items
AS
(
SELECT CAST(
CASE WHEN PATINDEX('%[^0-9]%',columnName)>1
THEN SUBSTRING(columnName,1,PATINDEX('%[^0-9]%',columnName))
ELSE '1' END
AS INT)
AS Number,
CASE WHEN PATINDEX('%[^0-9]%',columnName)>1
THEN SUBSTRING(columnName,PATINDEX('%[^0-9]%',columnName),LEN(columnName))
ELSE columnName END
AS Item
FROM theTable
)
SELECT CAST(SUM(Number) AS VARCHAR(10)) + ' ' + item + ' +' AS 'text()'
FROM items
GROUP BY item
FOR XML Path('')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.