<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Gary Pendergast &#187; replace</title>
	<atom:link href="http://pento.net/tag/replace/feed/" rel="self" type="application/rss+xml" />
	<link>http://pento.net</link>
	<description>I&#039;m on the Internet</description>
	<lastBuildDate>Wed, 08 Sep 2010 07:04:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<cloud domain='pento.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Case Insensitive REPLACE() for MySQL</title>
		<link>http://pento.net/2009/02/15/case-insensitive-replace-for-mysql/</link>
		<comments>http://pento.net/2009/02/15/case-insensitive-replace-for-mysql/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 12:22:18 +0000</pubDate>
		<dc:creator>Gary Pendergast</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[MySQL Forge]]></category>
		<category><![CDATA[replace]]></category>
		<guid isPermaLink="false">http://pento.net/?p=54</guid>
		<description><![CDATA[One request I occasionally see is for a case insensitive version of REPLACE() for MySQL. I wrote this a while back, but here it is now for all of you to play around with. It uses a basic naïve string search algorithm, so can be slow under some circumstances. DELIMITER $$ &#160; DROP FUNCTION IF [...]]]></description>
			<content:encoded><![CDATA[<p>One request I occasionally see is for a case insensitive version of REPLACE() for MySQL. I wrote this a while back, but here it is now for all of you to play around with. It uses a basic naïve string search algorithm, so can be slow under some circumstances.</p>
<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">DELIMITER $$
&nbsp;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">FUNCTION</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`replace_ci`</span>$$
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">FUNCTION</span> <span style="color: #ff0000;">`replace_ci`</span> <span style="color: #66cc66;">&#40;</span> str TEXT<span style="color: #66cc66;">,</span>needle CHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>str_rep CHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    RETURNS TEXT
    DETERMINISTIC
    BEGIN
        DECLARE return_str TEXT <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #ff0000;">''</span>;
        DECLARE lower_str TEXT;
        DECLARE lower_needle TEXT;
        DECLARE pos INT <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #cc66cc;">1</span>;
        DECLARE old_pos INT <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #cc66cc;">1</span>;
&nbsp;
        <span style="color: #993333; font-weight: bold;">SELECT</span> lower<span style="color: #66cc66;">&#40;</span>str<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">INTO</span> lower_str;
        <span style="color: #993333; font-weight: bold;">SELECT</span> lower<span style="color: #66cc66;">&#40;</span>needle<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">INTO</span> lower_needle;
        <span style="color: #993333; font-weight: bold;">SELECT</span> locate<span style="color: #66cc66;">&#40;</span>lower_needle<span style="color: #66cc66;">,</span> lower_str<span style="color: #66cc66;">,</span> pos<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">INTO</span> pos;
        WHILE pos <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span> DO
            <span style="color: #993333; font-weight: bold;">SELECT</span> concat<span style="color: #66cc66;">&#40;</span>return_str<span style="color: #66cc66;">,</span> substr<span style="color: #66cc66;">&#40;</span>str<span style="color: #66cc66;">,</span> old_pos<span style="color: #66cc66;">,</span> pos<span style="color: #66cc66;">-</span>old_pos<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> str_rep<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">INTO</span> return_str;
            <span style="color: #993333; font-weight: bold;">SELECT</span> pos <span style="color: #66cc66;">+</span> char_length<span style="color: #66cc66;">&#40;</span>needle<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">INTO</span> pos;
            <span style="color: #993333; font-weight: bold;">SELECT</span> pos <span style="color: #993333; font-weight: bold;">INTO</span> old_pos;
            <span style="color: #993333; font-weight: bold;">SELECT</span> locate<span style="color: #66cc66;">&#40;</span>lower_needle<span style="color: #66cc66;">,</span> lower_str<span style="color: #66cc66;">,</span> pos<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">INTO</span> pos;
        END WHILE;
        <span style="color: #993333; font-weight: bold;">SELECT</span> concat<span style="color: #66cc66;">&#40;</span>return_str<span style="color: #66cc66;">,</span> substr<span style="color: #66cc66;">&#40;</span>str<span style="color: #66cc66;">,</span> old_pos<span style="color: #66cc66;">,</span> char_length<span style="color: #66cc66;">&#40;</span>str<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">INTO</span> return_str;
        <span style="color: #993333; font-weight: bold;">RETURN</span> return_str;
END$$
&nbsp;
DELIMITER ;
&nbsp;
<span style="color: #993333; font-weight: bold;">SELECT</span> replace_ci<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">'mySQL'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'M'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'M'</span> <span style="color: #66cc66;">&#41;</span>;</pre></div></div>
<p>It&#8217;s also available on <a title="Case Insensitive REPLACE() for MySQL on MySQL Forge" href="http://forge.mysql.com/tools/tool.php?id=135">MySQL Forge</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://pento.net/2009/02/15/case-insensitive-replace-for-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
