Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Cómo Busco Una Palabra Exacta En Una Cadena De Texto Con Sql?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Cómo Busco Una Palabra Exacta En Una Cadena De Texto Con Sql? 
 
Bueno... resulta que necesito encontrar una palabra exacta dentro de una cadena de texto, he probado con Like %variable% lo cual funciona pero el tipo de búsqueda que hace es encontrar cualquier cosa que contenga la variable por ejemplo:

si tengo una tabla con los siguientes registro:

-juan
-juancho
-juanito
-juan pablo
-juananero

y al querer buscar "juan" con Like %juan% me dará como resultado los 5 registros

lo que necesito es buscar todos los registros que tengan la palabra "juan" en este caso me debería dar sólo dos resultados que serían:

-juan
-juan pablo

alguien sabe como hacerlo?


saludos!
 



 
DEATH - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cómo Busco Una Palabra Exacta En Una Cadena De Texto Con Sql? 
 
Mirate este enlace Coincidencia de patrones (busquedas en MySql)
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cómo Busco Una Palabra Exacta En Una Cadena De Texto Con Sql? 
 
jsbsan escribió: [Ver mensaje]
Mirate este enlace Coincidencia de patrones (busquedas en MySql)


lo he mirado pero aún no doy con lo que busco... sólo me muestra la opción de %variable o variable% que sólo busca que termine de tal forma o empiece de tal forma pero no encuentra una palabra exacta.
 



 
DEATH - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cómo Busco Una Palabra Exacta En Una Cadena De Texto Con Sql? 
 
Death mira esa condición like ya la hemos hablado aquí en el foro  ya que muchos lo han usado hasta para validar campos imagínate si el tipo se llama jose y meto juan "lo deja entrar automáticamente" porque quiere decir todo lo relacionado al mismo y lo único que haces decir buscar  por nombre j j j j o algo parecido a los que son de j j j y eso no es lo que se quiere, por ejemplo usa esta para buscar algo exacto a tu base de datos.

ejemplo:

para ello se debe usar la sentencia "where":

 ESTO ES CONSULTAS POR TABLAS:

Public Sub Button2_Click()
Dim fila As Integer

  If Label1.Text = "CEDULA" Then
   coneccion.hresul = coneccion.hcon.Exec("Select *from usuarios where nombre='" & TextBox3.Text & "'")--------Lo que metas alli en el campo nombre exacto lo mostrara en una tableview de lo contrario nada!

Ahora si es por textbox es otra cosa revisa un poco consultas por tetxbox.

http://foro.gambas-es.org/viewtopic.php?f=3&t=1695&start=10
 



 
última edición por jousseph el Lunes, 07 Enero 2013, 06:05; editado 1 vez 
jousseph - Ver perfil del usuarioEnviar mensaje privadoVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cómo Busco Una Palabra Exacta En Una Cadena De Texto Con Sql? 
 
jousseph a lo que apuntas es a otra cosa... lo que necesito es buscar una palabra exacta dentro de una cadena de texto de un registro en una base de datos sqlite, la sentencia where por si sola no me sirve  ya que lo que hace es buscar la coincidencia entre el registro completo de la base de datos con el texto a buscar, por otro lado si uso where en conjunto con un Like, la únicas posibilidades que tengo es encontrar que empiece como (Like xxx%), que termine como (Like %xxx) o que encuentre la coincidencia donde sea (Like %xxx%) pero no logro poder dar con la solución que busque una palabra exacta dentro del registro de la base de datos.

ejemplo... tengo la siguiente tabla:

ID    Parrafo
1      la meza es de color rojo
2      en mi país son escasa las flores
3      Bárbara vendrá a mi casa el sábado
4      mi automóvil no tiene radio
5      a mi hermana le gustan los mitos y leyendas

en este caso quiero buscar una palabra exacta dentro del campo "Parrafo" y si solamente uso where no funcionará porque buscará la coincidencia con el registro completo, si uso Like %casa% me dará por resultado el ID 2 y 3 pero si te das cuenta en el ID 2 no existe la palabra "casa", sólo existe la palabra "escasa", por lo tanto tampoco sirve este método, si uso Like casa% o Like %casa buscará una palabra que comience con casa o termine con casa respectivamente.
Lo que busco es algo parecido a Contain de t-sql de .net que te da la posibilidad de encontrar una palabra dentro de una cadena de texto, que es precisamente lo que busco.

espero que me entiendas ahora... a lo mejor fui un poco enredado al principio...
 



 
DEATH - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cómo Busco Una Palabra Exacta En Una Cadena De Texto Con Sql? 
 
¿y por que en vez de buscar like "%casa%", buscar like "% casa %" (un espacio entre % y la palabra buscada, y otro espacio entre la palabra buscada y %?

Para buscar cualquier palabra:
.....Like % " & palabrabuscar & " %  ....


Es posible que falle asi... prueba esto:
.... like ('% " & PalabraBuscar & " %') ... "

Solamento añado un parentesis y apostrofe al principio y al final
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Martes, 08 Enero 2013, 17:57; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cómo Busco Una Palabra Exacta En Una Cadena De Texto Con Sql? 
 
jsbsan el problema de buscar con espacios es que dejas afuera cualquier palabra que se encuentre junto a un símbolo por ejemplo:

casa,
,casa
-casa
:casa
casa:

etc

entonces en esos casos no podrá encontrar esas palabras...

mmmmm me niego a que no se puede hacer la búsqueda que necesito...
 



 
DEATH - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cómo Busco Una Palabra Exacta En Una Cadena De Texto Con Sql? 
 
He encontrado esto: Enlace Coincidencia de patrones y REGEXP y
blog Expresiones regulares (REGEXP) en MySQL

En el blog viene un ejemplo que te hace lo que quieres:

Citar:
SELECT `nombre` FROM `empleados`
WHERE `nombre` REGEXP '[[:<ana>:]]';

Esta consulta sólo devolverá aquellas columnas en las que aparezca “ana” como palabra única y aislada, delimitada por caracteres no alfabéticos, es decir, cualquier caracter que no sea una letra ya sea número, signo de puntuación o espacio en blanco entre otros.


Nota:
Mirate el blog, para ver el codigo del ejemplo, porque en el editor del foro no sale completo...   
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Martes, 08 Enero 2013, 21:56; editado 2 veces 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cómo Busco Una Palabra Exacta En Una Cadena De Texto Con Sql? 
 
Algo raro pasa...

estuve investigando y efectivamente como dices tu, usar expresiones regulares con REGEXP puedo obtener el resultado que busco, pero al agregarlo a mi instrucción SQL me da error, lo intenté de muchas formas pensando que estaba mal hecha pero no, el resultado era siempre el mismo... ERROR

buscando información en Sqlite.org di con este párrafo

Citar:
The REGEXP operator is a special syntax for the regexp() user function. No regexp() user function is defined by default and so use of the REGEXP operator will normally result in an error message. If a application-defined SQL function named "regexp" is added at run-time, that function will be called in order to implement the REGEXP operator.

Traducido (traductor de google)

El operador REGEXP es una sintaxis especial para la expresión regular () la función del usuario. No regexp () de usuario se define por defecto y por lo tanto el uso del operador REGEXP normalmente dará como resultado un mensaje de error. Si una aplicación de una función definida por SQL denominada "regexp" se agrega en tiempo de ejecución, esta función será llamada con el fin de aplicar el operador REGEXP.


como se puede observar, en la explicación habla sobre el error y habla de una función en tiempo de ejecución.  Esto ya me deja enredado pero si me deja claro que tratar de ejecutarla de la forma tradicional no funcionará jamás.  Buscando un poco más me di cuenta que dentro de los componentes de Gambas3 existe uno que se llama gb.pcre que al agregarlo a mi proyecto y al declarar una variable me permite declararla como REGEXP ejemplo:



la verdad es que desconozco si esto tiene alguna relación pero creo que puede servir para poder darnos una idea de donde debemos apuntar.
 



 
DEATH - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cómo Busco Una Palabra Exacta En Una Cadena De Texto Con Sql? 
 
El problema no es de gambas, ni tiene que ver con componente gb.pcre.

El problema viene de SQLITE . Por lo que he leido, la funcion REGEXP, no viene instalada por defecto en SQLITE (en algunas distribuciones linux parece que si, en Ubuntu, no). La solución es instalarla, para que SQLITE la reconozca....

En la siguiente dirección url Enlace he encontrado lo que parece ser la solución:
Citar:
As others pointed out already, REGEXP calls a user defined function which must first be defined and loaded into the the database. Maybe some sqlite distributions or GUI tools include it by default, but my Ubuntu install did not. The solution was

sudo apt-get install sqlite3-pcre

which implements Perl regular expressions in a loadable module in /usr/lib/sqlite3/pcre.so

To be able to use it, you have to load it each time you open the database:

.load /usr/lib/sqlite3/pcre.so

Or you could put that line into your ~/.sqliterc.

Now you can query like this:

SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';



Y en un comentario tambien dice otra forma de cargarla:
Citar:
Another load option: I created a view with this: SELECT load_extension('/usr/lib/sqlite3/pcre.so'); That way when I use a GUI based entry point to the DB (like SQLite Manager in Firefox), I have a way to load the REGEXP capability


 sqlite_regexp
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Busco Función Para Saber El Número De Ve... sc0w General 1 Lunes, 08 Marzo 2010, 07:50 Ver último mensaje
alexprox
No hay nuevos mensajes Extraer Una Palabra De Un Texto. shordi General 9 Lunes, 18 Agosto 2014, 08:40 Ver último mensaje
Shell
No hay nuevos mensajes Como Colorear Una Palabra En El Texto De U... v3ctor General 4 Lunes, 18 May 2015, 17:04 Ver último mensaje
vuott
No hay nuevos mensajes Leer Un Texto Anterior A Una Palabra rootchack General 3 Miercoles, 21 Junio 2017, 12:16 Ver último mensaje
vuott
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron