Hello, here i m going to describe the split value function /Store procedure in mysql....
suppose i want to pass mulitple id as '12,113,14,15,10' than how can i separate.... the solution is below....use below store procedure to separate each id's
DELIMITER $$
DROP PROCEDURE IF EXISTS `ecommerce`.`SplitValue`$$
CREATE PROCEDURE `SplitValue`
(
input VARCHAR(8000),
delim VARCHAR(10),
Ids VARCHAR(36)
)
BEGIN
DECLARE foundPos TINYINT UNSIGNED;
DECLARE tmpTxt TEXT;
DECLARE delimLen TINYINT UNSIGNED;
DECLARE element TEXT;
DROP TEMPORARY TABLE IF EXISTS tmpValues;
CREATE TEMPORARY TABLE tmpValues
(
valuess DECIMAL(18,0) NOT NULL DEFAULT 0,
Id VARCHAR(36)
)
ENGINE = MEMORY;
SET delimLen = LENGTH(delim);
SET tmpTxt = input;
SET foundPos = INSTR(tmpTxt,delim);
WHILE foundPos <> 0
DO
SET element = SUBSTRING(tmpTxt, 1, foundPos-1);
SET tmpTxt = REPLACE(tmpTxt, CONCAT(element,delim), '');
SET element=CAST(element AS DECIMAL(18,0));
INSERT INTO tmpValues (valuess,Id) VALUES ( element,Ids);
SET foundPos = INSTR(tmpTxt,delim);
END WHILE;
IF tmpTxt <> ''
THEN
SET tmpTxt=CAST(tmpTxt AS DECIMAL(18,0));
INSERT INTO tmpValues (valuess,Id)
VALUES (tmpTxt,Ids);
END IF;
SELECT Id,valuess FROM tmpValues;
END$$ DELIMITER ;
suppose i m calling this store procedure as
CALL SplitValue('11,12,13,14,15')
-- then the oputput of this
-- id VALUE
-- 1 11
-- 2 12
-- 3 13
-- 4 14
-- 5 15
No comments:
Post a Comment