<?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; SQL</title>
	<atom:link href="http://www.indalcasa.com/category/programacion/sql/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>
		<item>
		<title>Evitar bloquear una tabla en SQL Server</title>
		<link>http://www.indalcasa.com/programacion/sql/evitar-bloquear-una-tabla-en-sql-server/</link>
		<comments>http://www.indalcasa.com/programacion/sql/evitar-bloquear-una-tabla-en-sql-server/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 09:34:46 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Base de datos]]></category>
		<category><![CDATA[Consulta]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=53</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/sql/evitar-bloquear-una-tabla-en-sql-server/' addthis:title='Evitar bloquear una tabla en SQL Server ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div>En muchos casos es necesario hacer consultas hacia la base de datos que requieren de algo de tiempo para completarse, por ejemplo consultas estadisticas. En estos casos, suele ocurrir que SQL Server puede bloquear la tabla evitando que ningún otro hilo realice consultas sobre la misma hasta que la primera consulta haya finalizado, pudiendo provocar [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/sql/evitar-bloquear-una-tabla-en-sql-server/' addthis:title='Evitar bloquear una tabla en SQL Server ' ><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/sql/evitar-bloquear-una-tabla-en-sql-server/' addthis:title='Evitar bloquear una tabla en SQL Server ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div><p>En muchos casos es necesario hacer consultas hacia la base de datos que requieren de algo de tiempo para completarse, por ejemplo consultas estadisticas. En estos casos, suele ocurrir que <strong>SQL Server</strong> puede <strong>bloquear la tabla</strong> evitando que ningún otro hilo realice consultas sobre la misma hasta que la primera <strong>consulta</strong> haya finalizado, pudiendo provocar esto una considerable lentitud en una página web o una aplicación que utilicen bastantes personas.</p>
<p>Existe para <strong>SQL Server</strong> un ABS, un sistema para que a la hora de realizar una consulta, evitar que esta bloquee la tabla y asi nuestra aplicación siga funcionando correctamente mientras por detras se esta realizando la consulta tediosa que en otras circunstancias nos bloquearia la tabla.</p>
<p>Para evitar bloquear la tabla se ha de poner <strong>with(nolock)</strong> justo despues del nombre de la tabla, por ejemplo:</p>
<p><strong>SELECT * FROM tabla with(nolock)</strong></p>
<p>Esto es algo muy util ya que bien porque se nos olivde o simplemente porque no se conozca es muy util tenerlo a mano para utilizarlo en casi todas las consultas que son algo tediosas.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/sql/evitar-bloquear-una-tabla-en-sql-server/' addthis:title='Evitar bloquear una tabla en SQL Server ' ><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/sql/evitar-bloquear-una-tabla-en-sql-server/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

