Hi ,

I have a sp that manipulate strings.
The sp Get some data in theformat of Rows and Fields.
For exsample :
'111|222|333|444@555|666|777|888'
The @ seperates Rows.
The | seperates Fields.

Each row always contain 4 fields.
The number of row is not known.


The sp Manipulate the string and rutrn each "field" Seperatly.

When I call string_manipulation('111|222|333|444')
Everythings work fine and the result is :

111
222
333
444

The strange thing is that when i call string_manipulation('1|222|333|444')
The result is :
1
o2 <--- Here is the problem.
333
444

Instead of getting '222' i get some strange string in an un recognized charechter.

I'm using mysql 5.0.13, innodb, windows xp, the default charechter set for the db is hebrew.
Here is the SP.

DELIMITER $$

DROP PROCEDURE IF EXISTS `bcm`.`string_manipulation` $$
CREATE PROCEDURE `string_manipulation`(AllData VARCHAR(100))
BEGIN



#CALL sp_Export_list('1111|222||444')



DECLARE RowPos INTEGER;
DECLARE RowStr VARCHAR(100) DEFAULT '';
DECLARE FldPos INTEGER;
DECLARE FldStr VARCHAR(100) DEFAULT '';
DECLARE ChckRowState INTEGER DEFAULT 1;
DECLARE FldCount INTEGER;

SET AllData = CONCAT(AllData,'@') ;

REPEAT #rows Loop

SET RowPos = INSTR(AllData,'@'); #finds the First Row End Position

SET RowStr = LEFT(AllData,RowPos-1); #Put the first Row String into variable

SET FldCount = 1; #Initialize the field counter . the loop will run 4 times
#Ther are onlyqalways 4 fields

SET RowStr = CONCAT(RowStr,'|');

#SELECT RowStr;

REPEAT #fields Loop

SET FldPos = INSTR(RowStr,'|'); #finds the First Field End Position

SET FldStr = LEFT(RowStr,FldPos-1); #Put the first field String into variable

SELECT FldStr;

SET RowStr = RIGHT(RowStr,LENGTH(RowStr) - FldPos); # row string without the field already handled

SET FldCount = FldCount + 1;

UNTIL FldCount=5 END REPEAT;


SET AllData = RIGHT(AllData,LENGTH(AllData)-RowPos); # Alldata string without the Row already handled

IF INSTR(AllData,'@') > 0 THEN

SET ChckRowState=1;

ELSE

SET ChckRowState=0;

END IF;

UNTIL ChckRowState=0 END REPEAT;


END $$

DELIMITER ;

Thanks In Advance
Barak