Hello,
Here is a set based solution.
Using v4.0.6 gamma on w2k pro.
CREATE TABLE broad (name varchar(10) not null,
groups varchar(20) not null,
primary key (name));
INSERT INTO broad values("DOG","1,3,4,2"),
("CAT","2,4,5"),
("BIRD","3,1,2"),
("SHEEP","3,9,11,1,17,2");
-- Create table of digits from 1-N where N is >= to the length of
-- largest groups string (number of characters in string).
CREATE TABLE digits
(digit tinyint unsigned not null primary key);
INSERT INTO digits
values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15);
-- Parse out each number in the groups string into column number.
-- @s holds the delimiter used in the string (groups) to be parsed (ie.
comma).
SET @s:=',';
SELECT name,
1*(LTRIM(RTRIM(SUBSTRING(CONCAT(@s,groups,@s),digit+1,
LOCATE(@s,CONCAT(@s,groups,@s),digit+1)-
(LOCATE(@s,CONCAT(@s,groups,@s),digit)+1))))) as number
from broad,digits
where digit between LOCATE(@s,CONCAT(@s,groups,@s),digit) and
LENGTH(CONCAT(@s ,groups)) -1
-- ORDER BY name,number
ORDER BY number,name;
MS Server guy very interested in MySql.
www.rac4sql.net
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php