<?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>Indalcasa &#187; TEXT</title>
	<atom:link href="http://www.indalcasa.com/tag/text/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.indalcasa.com</link>
	<description>Un blog de tecnologia</description>
	<lastBuildDate>Tue, 03 Jan 2012 15:14:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Reemplazar un texto en SQL Server con TSQL</title>
		<link>http://www.indalcasa.com/programacion/reemplazar-un-texto-en-sql-server-con-tsql/</link>
		<comments>http://www.indalcasa.com/programacion/reemplazar-un-texto-en-sql-server-con-tsql/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 08:47:09 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Replace]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[TEXT]]></category>
		<category><![CDATA[TSQL]]></category>
		<category><![CDATA[VARCHAR]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=55</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/reemplazar-un-texto-en-sql-server-con-tsql/' addthis:title='Reemplazar un texto en SQL Server con TSQL ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div>Supongamos que tenemos un campo con un texto y lo recuperamos con una consulta SQL. Supongamos también que queremos cambiar parte del contenido de ese texto y reemplazarlo por otro, en este caso realizaríamos un replace por código (programación), pero y si esto no nos vale, y si necesitamos que sea por consulta todo. Para [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/reemplazar-un-texto-en-sql-server-con-tsql/' addthis:title='Reemplazar un texto en SQL Server con TSQL ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/reemplazar-un-texto-en-sql-server-con-tsql/' addthis:title='Reemplazar un texto en SQL Server con TSQL ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div><p>Supongamos que tenemos un campo con un texto y lo recuperamos con una <strong>consulta SQL</strong>. Supongamos también que queremos cambiar parte del contenido de ese texto y reemplazarlo por otro, en este caso realizaríamos un <strong>replace por código (programación)</strong>, pero y si esto no nos vale, y si necesitamos que sea por <strong>consulta</strong> todo. Para estos casos existe una <strong>funcion REPLACE que se ejecuta en SQL</strong> y es similar a la de la mayoría de lenguajes de programación.</p>
<p>La llamada a la <strong>función de reemplazo (REPLACE)</strong> se usara dentro de cualquier <strong>código SQL o TSQL en SQL Server</strong>. La <strong>función REPLACE</strong> tiene 3 parámetros, el texto original completo, el texto que se quiere buscar y por último el texto por el que se quiere sustituir como se hace en muchos lengaujes de programación.</p>
<p>La sintaxis sería:</p>
<blockquote><pre class="sql">  <span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span>TEXTO, BUSCADA, SUSTITUIDA<span style="color: #66cc66;">&#41;</span></pre>
</blockquote>
<p>Un ejemplo de como se incrustaría el <strong>reemplazo en una consulta SQL</strong> sería:</p>
<blockquote><pre class="sql">  <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span>campo, <span style="color: #ff0000;">'a'</span>, <span style="color: #ff0000;">'b'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> tabla</pre>
</blockquote>
<p>Aqui nos encontramos con el primer de los dos grandes problemas de <strong>reemplazar texto</strong> con esta función. El primer problema son los <strong>campos de tipo TEXT</strong>, que al parecer, para <strong>SQL Server</strong> son objetos diferentes que los <strong>campos de tipo CHAR o VARCHAR</strong> y para poder reemplazar un <strong>campo de tipo TEXT</strong> necesitamos hacer un pequeño HACK que nos <strong>convierta de tipo TEXT a tipo STRING</strong> como si de un <strong>VARCHAR</strong> se tratase.</p>
<p>El Hack en cuestion se trata de hacer un <strong>SUBSTRING</strong> desde la primera posición de la cadena hasta la última utilizando la longitud de la misma obtenida con la <strong>funcion DATALENGTH</strong>. De esta forma, con el <strong>SUBSTRING convertimos el tipo TEXT en un tipo STRING o VARCHAR</strong> y asi podemos reemplazar.</p>
<p>Un ejemplo seria:</p>
<blockquote><pre class="sql">  <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">REPLACE</span><span style="color: #66cc66;">&#40;</span>
    SUBSTRING<span style="color: #66cc66;">&#40;</span>campo, <span style="color: #cc66cc;">1</span>, DATALENGTH<span style="color: #66cc66;">&#40;</span>campo<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>,
    <span style="color: #ff0000;">'a'</span>, <span style="color: #ff0000;">'b'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> tabla</pre>
</blockquote>
<p>Y es aquí cuando nos encontramos con el segundo y mayor de los problemas y es la longitud de la cadena. Cuando trabajamos con una cadena de texto realmente larga, como podría ser una página web, el <strong>SUBSTRING</strong> o el <strong>REPLACE</strong> no devuelve la cadena completa, por lo que se nos cortara la respuesta y obtendremos solo parte del texto original, eso si, ya <strong>reemplazado</strong>.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/reemplazar-un-texto-en-sql-server-con-tsql/' addthis:title='Reemplazar un texto en SQL Server con TSQL ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/reemplazar-un-texto-en-sql-server-con-tsql/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
	</channel>
</rss>

