Buscar cadena con SQL sin importar mayúsculas/minúsculas

2,150 views
Skip to first unread message

ultraton500

unread,
Oct 20, 2011, 5:35:16 PM10/20/11
to Comunidad de Visual Foxpro en Español
Qué tal compañeros, esta vez los consulto para ver si alguien me puede
indicar cómo se búscaría en SQL una determinada cadena de caracteres
sin importar si está en mayúsculas o minúsculas pero con comandos o
cláusulas nativas de SQL. Es decir sin utilizar dentro del SQL
comandos de VFP tales como "WHERE UPPER(campo)=UPPER(lcCadenaBuscada)"
Desde ya agradezco sus aportes.
Saludos cordiales,
Javier.

Víctor Hugo Espínola Domínguez

unread,
Oct 20, 2011, 5:54:30 PM10/20/11
to publice...@googlegroups.com
Hola Javier


Saludos, Víctor

Ing.Daniel Bojorge

unread,
Oct 20, 2011, 5:55:33 PM10/20/11
to publice...@googlegroups.com
Según he investigado el   UPPER se usa en la sentencia SQL, por ejemplo, si estás en SQL Server también se utiliza (ver http://technet.microsoft.com/es-es/library/ms180055.aspx) el UPPER.  En MySQL también (ver http://www.sqlinfo.net/mysql/mysql_function_upper_lower.php),

Creo que es una función (no que pertenece a SQL) que se ha hecho en cada motor de base de datos.


Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
www.debsconsultores.com
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)

ultraton500

unread,
Oct 20, 2011, 6:04:27 PM10/20/11
to Comunidad de Visual Foxpro en Español
Hola Víctor Hugo, gracias por responder. Al cliquear en el vínculo que
me indicas me abre el correo de gmail y me dice que la conversación
que solicito ya no existe.
Saludos,
Javier.

On 20 oct, 15:54, Víctor Hugo Espínola Domínguez <vichus...@gmail.com>
wrote:
> Hola Javier
>
> Fíjate en este hilo:https://mail.google.com/mail/?hl=es&shva=1#search/vichuspin/12f36f48a...
>
> Saludos, Víctor

ultraton500

unread,
Oct 20, 2011, 6:32:05 PM10/20/11
to Comunidad de Visual Foxpro en Español
Daniel, gracias por tu respuesta, antes de consultar aquí estuve
investigando un poco y al parecer es como dices, cada motor usa
distintas funciones. Momentaneamente estoy reformando una consulta
para dbf pero me gustaría saber cómo sería en sql nativo (si es que
existe) para no tener que hacer cambios al migrar a Firebird.
Saludos,
Javier.

On 20 oct, 15:55, "Ing.Daniel Bojorge" <debs.fo...@gmail.com> wrote:
> Según he investigado el   UPPER se usa en la sentencia SQL, por ejemplo, si
> estás en SQL Server también se utiliza (verhttp://technet.microsoft.com/es-es/library/ms180055.aspx) el UPPER.  En
> MySQL también (verhttp://www.sqlinfo.net/mysql/mysql_function_upper_lower.php),
>
> Creo que es una función (no que pertenece a SQL) que se ha hecho en cada
> motor de base de datos.
>
> Dios L@s Bendiga
>
> Saludos,
>
> Daniel (Con 1 Estrella DCE de Microsoft)www.debsconsultores.com
> Nicaragua
>
> "Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas,
> pidan lo que quieran y se les dará.
> (Juan 15:7 DHH)
> Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
> (Jeremías 17:7 RV2000)
>

Ing.Daniel Bojorge

unread,
Oct 20, 2011, 6:36:25 PM10/20/11
to publice...@googlegroups.com
Mirá como funciona en FireBird




Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
www.debsconsultores.com
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)



Víctor Hugo Espínola Domínguez

unread,
Oct 20, 2011, 8:10:00 PM10/20/11
to publice...@googlegroups.com
Hola Javier

No entiendo que pasa, probé el enlace y la primera vez me dió el error, la segunda vez entró sin problema!. El título del hilo es: "problemas con acento" .
A continuación lo que yo había sugerido en esa oportunidad:

Tienes que definir funciones en VFP7 y SQL2000.

VFP7:

Function TxtNormal ( tcTextoEspanyol AS String )

*
* Convierte un texto en español a texto normalizado en minúsculas
*
* El texto normalizado no cotiene letras acentuadas
*
LOCAL lcTxtNormal As String

lcTxtNormal = LOWER( tcTextoEspanyol )
lcTxtNormal = CHRTRAN( lcTxtNormal, "áéíóúü", "aeiouu" )
RETURN ( lcTxtNormal )
*

SQL2000:

CREATE FUNCTION <usuario>.TextoNormalizado ( @cTextoEspanyol varchar( 100 ) )
RETURNS varchar( 100 )
AS
BEGIN
DECLARE @cTextoNormalizado varchar( 100 )

SET @cTextoNormalizado = LOWER( @cTextoEspanyol )
SET @cTextoNormalizado = REPLACE( @cTextoNormalizado, 'á', 'a')
SET @cTextoNormalizado = REPLACE( @cTextoNormalizado, 'é', 'e')
SET @cTextoNormalizado = REPLACE( @cTextoNormalizado, 'í', 'i')
.
.
.

RETURN ( @cTextoNormalizado )
END


lcTexto = "Apéndice"
lcTexto = TRIM( TxtNormal( lcTexto ) )

SELECT *, <usuario>.TextoNormalizado ( [CAMPO] ) AS TxtNormal FROM [TABLA] ;
WHERE CHARINDEX( lcTexto, TxtNormal ) > 0


Nota: La función de VFP7 puede ser sustituida por una sola sentencia

* lcTexto = TRIM( CHRTRAN( LOWER( lcTexto ), "áéíóúü", "aeiouu" ) )

Espero te sirva como una guía de referencia.
 
Saludos, Víctor.

Luis Mata

unread,
Oct 21, 2011, 6:53:37 AM10/21/11
to publice...@googlegroups.com
tambien revisa el collate

ultraton500

unread,
Oct 21, 2011, 3:26:24 PM10/21/11
to Comunidad de Visual Foxpro en Español
Exelente Daniel, muchas gracias. Con este dato no solo me las arreglo
y muy bien sino que además no requiere reformas sobre la la manera en
la que lo hago para dbf.
Gracias una vez mas.
Saludos,
Javier.

On 20 oct, 16:36, "Ing.Daniel Bojorge" <debs.fo...@gmail.com> wrote:
> Mirá como funciona en FireBird
>
> http://www.firebirdsql.org/refdocs/langrefupd21-intfunc-upper.html
>
> Dios L@s Bendiga
>
> Saludos,
>
> Daniel (Con 1 Estrella DCE de Microsoft)www.debsconsultores.com
> Nicaragua
>
> "Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas,
> pidan lo que quieran y se les dará.
> (Juan 15:7 DHH)
> Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
> (Jeremías 17:7 RV2000)
>

ultraton500

unread,
Oct 21, 2011, 3:40:39 PM10/21/11
to Comunidad de Visual Foxpro en Español
Hola Víctor, lo del enlace debe ser porque, al estar viendo este grupo
desde la web, al vínculo lo muestra recortado (o al menos eso creo
porque termina en puntos suspensivos).
En cuanto a la función me parece interesante y muy útil, el
inconveniente es que no puede aplicarse una función de vfp a un campo
a través de un SELECT SQL si se trabaja con otro motor de db que no
sea el nativo.
En otras palabras las funciones admitidas dentro de una consulta
SELECT SQL son las funciones propias del SGBD que se está utilizando y
no las de VFP.
De todas formas y claro está, valoro y agradezco el tiempo que dedicas
a darme una mano.
Saludos,
Javier.


On 20 oct, 18:10, Víctor Hugo Espínola Domínguez <vichus...@gmail.com>
wrote:
> Hola Javier
>

ultraton500

unread,
Oct 21, 2011, 3:47:50 PM10/21/11
to Comunidad de Visual Foxpro en Español
Cómo estás Luis.. Gracias por el comentario. He estado buscado sobre
collate en Firebird y lo voy a investigar.
Saludos cordiales,
Javier.

Walter R. Ojeda Valiente

unread,
Oct 21, 2011, 6:37:48 PM10/21/11
to publice...@googlegroups.com
Hola Javier

En Firebird se pueden usar varias funciones que ya vienen incluidas y también cualquier función externa que desees.

Una de las funciones incluidas es UPPER()

Saludos.

Walter.



> Date: Thu, 20 Oct 2011 15:32:05 -0700
> Subject: [vfp] Re: Buscar cadena con SQL sin importar mayúsculas/minúsculas
> From: ultra...@gmail.com
> To: publice...@googlegroups.com

Víctor Hugo Espínola Domínguez

unread,
Oct 21, 2011, 8:07:09 PM10/21/11
to publice...@googlegroups.com
Hola Javier

La función TextoNormalizado se define en SQL Server 2000, debería funcionar en las versiones posteriores.
Para una migración a otros motores de BD, se recomienda que los comandos SQL (SELECT, INSERT, UPDATE, etc... ) estén en una librería de clases o funciones, por ejemplo tendrías:
function GetAll( tcFieldList as string, ;
tcTableName as string, ;
tcOrderBy as string,  ;
tcAlias as string ) as string

function GetByKey( tcFieldList as string,  ;
tcTableName as string,  ;
tuP1 as Variant, ;
tuP2 as Variant, ;
tuP3 as Variant, ;
tuP4 as Variant, ;
tuP5 as Variant,  ;
tcAlias as string ) as string

function GetByWhere( tcFieldList as string, ;
tcTableName as string, ;
tcCondition as string,         ;
tcAlias as string ) as string
....

Saludos Víctor.

ultraton500

unread,
Oct 24, 2011, 4:06:51 PM10/24/11
to Comunidad de Visual Foxpro en Español
Estuve revisando de dónde acqué que no se podían incluir funciones
dentro de las sentencias sql para motores no nativos y encontré que
fué una interpretación errónea de un artículo sobre cliente-servidor
que leí hace un tiempo. Pero bueno, me alegra saber que estaba
equivocado ya que poder hacerlo es de gran utilidad. Walter... gracias
como siempre y Víctor gracias una vez mas por las recomendaciones que
voy a tener en cuenta.
Saludos cordiales,
Javier.
Reply all
Reply to author
Forward
0 new messages