gpt4 book ai didi

mysql - 如何连接 MySql 中的值?

转载 作者:行者123 更新时间:2023-11-29 17:22:29 25 4
gpt4 key购买 nike

请找到下面的代码,下面的代码是sql server代码[存储过程]我在此链接中将sql转换为mysql mysql下面是sql SP

USE databasename
GO
ALTER PROCEDURE GetSbsberIDbyDept
@P_DepartmentIds varchar(max),
@OP_ID varchar(max) output
AS
BEGIN
Declare @Position int
Declare @length int
Declare @value varchar(8000)
Declare @SubscribrIDs varchar(max)
Declare @FinalSubscriberids varchar(max) = ''
SET @Position = 0
SET @length = 0
select @P_DepartmentIds
WHILE CHARINDEX(',', @P_DepartmentIds, @Position+1)>0
BEGIN
set @Length = CHARINDEX(',', @P_DepartmentIds, @Position+1) - @Position
set @value = SUBSTRING(@P_DepartmentIds, @Position, @length)
select @SubscribrIDs = STUFF((SELECT ', ' + cast(SubscriberId as varchar(max)) from SbsberDetails
where Deptid = @value and ParentId is null order by SubscriberId asc FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,2,'')
if(@SubscribrIDs is not null)
begin
set @FinalSubscriberids += cast(@SubscribrIDs as varchar(max)) + ',';
end
set @Position = CHARINDEX(',', @P_DepartmentIds, @Position + @length) +1
END
SET @OP_ID = @FinalSubscriberids
END

我转换为MySql,但我在STUFF语句中收到错误,例如STUFF在此位置无效输入,下面是Mysql代码

    USE databasename     
DELIMITER //

CREATE PROCEDURE GetSbsberIDbyDept(
p_P_DepartmentIds longtext,
p_OP_ID out longtext )
BEGIN
Declare v_Position int;
Declare v_length int;
Declare v_value varchar(8000);
Declare v_SubscribrIDs longtext;
Declare v_FinalSubscriberids longtext Default '';
SET v_Position = 0;
SET v_length = 0;
select p_P_DepartmentIds
WHILE; CHARINDEX(',', p_P_DepartmentIds, v_Position+1)>0
BEGIN
set v_length = CHARINDEX(',', p_P_DepartmentIds, v_Position+1) - v_Position;
set v_value = SUBSTRING(p_P_DepartmentIds, v_Position, v_length);
set v_SubscribrIDs = STUFF((SELECT Concat(', ' , cast(SubscriberId as longtext)) from SbsberDetails
where Deptid = v_value and ParentId is null order by SubscriberId asc FOR XML; PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,2,'')
if(v_SubscribrIDs is not null)
then
set v_FinalSubscriberids += concat(cast(v_SubscribrIDs as longtext) , ',');
end if;
set v_Position = CHARINDEX(',', p_P_DepartmentIds, v_Position + v_length) +1;
END;
SET p_OP_ID = v_FinalSubscriberids;
END;
//

DELIMITER ;

如何将上面的sql代码转换为MySql?

最佳答案

STUFF是SQL服务器函数,所以它在mysql中抛出错误,我得到的东西是试图行连接,但在mysql中有函数名称GROUP_CONCAT对于组取消,所以你可以用它代替东西

关于mysql - 如何连接 MySql 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51185317/

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