gpt4 book ai didi

mysql - 在 mssql 中,用 '$$' 分隔的整数对单元格中的值求和,但数据类型为 varchar

转载 作者:行者123 更新时间:2023-11-29 12:02:13 24 4
gpt4 key购买 nike

我有下表,其中包含表格数据

ID  |Department | SaleMngrs(VARCHAR(200))  | 
---------------------------------------------
1 |Technics | '1$$2$$3$$4'|
2 |Development| '10$$21$$43'|

我想要如下所示的结果

ID  |Department | SaleMngrs   | sum 
-------------------------------------
1 |Technics | '1$$2$$3$$4'| 10
2 |Development| '10$$21$$43'| 74

最佳答案

如果您使用的是 SQL Server,则使用解决方案编号 #1,或者如果您使用的是 MySql,则使用解决方案编号 #2

解决方案#1

对于 SQL Server,最好使用函数来分割字符串并从中获取值,您需要创建下面的函数

函数分割字符串

CREATE FUNCTION SplitStrings
(
@Input NVARCHAR(MAX),
@Character CHAR(2)
)
RETURNS @Output TABLE (
Item NVARCHAR(1000)
)
AS
BEGIN
DECLARE @StartIndex INT, @EndIndex INT

SET @StartIndex = 1
IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character
BEGIN
SET @Input = @Input + @Character
END

WHILE CHARINDEX(@Character, @Input) > 0
BEGIN
SET @EndIndex = CHARINDEX(@Character, @Input)

INSERT INTO @Output(Item)
SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1)

SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input))
END

RETURN
END
GO

执行此函数后运行以下查询

SELECT ID, Department, SaleMngrs, 
(SELECT SUM(CONVERT(INT,Item)) FROM dbo.SplitString(SaleMngrs, '$$')) AS Sum
From Temp_Table

解决方案#2

SELECT ID, Department, SaleMngrs, SUBSTRING_INDEX(SaleMngrs,'$$',1) +
SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(SaleMngrs,'$$0'),'$$',2),'$$',-1) +
SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(SaleMngrs,'$$0'),'$$',3),'$$',-1) +
SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(SaleMngrs,'$$0'),'$$',4),'$$',-1) +
SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(SaleMngrs,'$$0'),'$$',5),'$$',-1) AS SUM
From Temp_Table;

这是 SQL fiddle URL,您可以在此处查看。

http://sqlfiddle.com/#!2/de5066/1

关于mysql - 在 mssql 中,用 '$$' 分隔的整数对单元格中的值求和,但数据类型为 varchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32178788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com