 <p>One option that I recommend is to use <a href="http://code.google.com/p/common-schema/" rel="nofollow">common_schema</a> and specifically functions <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/get_num_tokens.html" rel="nofollow"><code>get_num_tokens()</code></a> and <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/split_token.html" rel="nofollow"><code>split_token()</code></a>, this will help.</p> <p>Here a simple example of the use that you can adapt for your solution:</p> <pre class="lang-sql prettyprint-override"><code>/* CODE FOR DEMONSTRATION PURPOSES */ /* Need to install common_schema - code.google.com/p/common-schema/ */ /* Procedure structure for procedure `explode1` */ /*!50003 DROP PROCEDURE IF EXISTS `explode1` */; DELIMITER $$ CREATE PROCEDURE `explode1`(str varchar(65500), delim VARCHAR(255)) BEGIN DECLARE _iteration, _num_tokens INT UNSIGNED DEFAULT 0; DROP TEMPORARY TABLE IF EXISTS `temp_explode`; CREATE TEMPORARY TABLE `temp_explode` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `word` VARCHAR(200), PRIMARY KEY (`id`)); SET _num_tokens := (SELECT `common_schema`.`get_num_tokens`(str, delim)); WHILE _iteration &lt; _num_tokens DO SET _iteration := _iteration + 1; INSERT INTO `temp_explode` (`word`) SELECT `common_schema`.`split_token`(str, delim, _iteration); END WHILE; SELECT `id`, `word` FROM `temp_explode`; DROP TEMPORARY TABLE IF EXISTS `temp_explode`; END $$ DELIMITER ; /* TEST */ CALL `explode1`('Lorem Ipsum is simply dummy text of the printing and typesetting', CHAR(32)); </code></pre>