Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Ayuda Con Sensitive Case En Sql

Ayuda Con Sensitive Case En Sql
Artículo
Responder citando    Descargar mensaje  
Mensaje Ayuda Con Sensitive Case En Sql 
 
buenas

les muestro en que ando en estos días.

 visorrv1960_1


mas o menos logre una rutina para filtrar las búsquedas y colorear las palabras claves, pero....
el inconveniente me lo da sql pues si pongo pablo no me muestra resultados, y si, si pongo Pablo con mayúsculas,
también me sucede si pongo las palabras sin tilde cuando estas llevan tilde no muestra resultados.
otra cosa me olvidaba es que como se hace en sql hacer busquedas estrictas?


alguna sugerencia que no sea anda a estudiar sql? jajajajja

como hago para desactivar sensitive case de sql?

Public Sub BuscarEnTodos()
  Dim Xtabla As Table
  Dim ResultadoX As Result
  Dim ContadorVersiculos, Buscando As Integer
  Dim Proceso1, Proceso2 As String
  
  For Each Xtabla In Conexion.Tables
    If Left$(Xtabla.Name, 7) = "sqlite_" Then Continue
    If Xtabla.Name = "biblia" Then Continue
    
  ' Print "Select * from '" & Xtabla.Name & "' where texto like '%" & txtFiltro.Text & "%'"
  Try Conexion.Exec("Select * from '" & Xtabla.Name & "' where texto like '%" & txtFiltro.Text & "%'")
  If Error Then
'    Print "error con tabla" & Xtabla.Name
   Continue
  Else
'     Print "ok=" & Xtabla.Name
  Endif
  
    ResultadoX = Conexion.Exec("Select * from '" & Xtabla.Name & "' where texto like '%" & txtFiltro.Text & "%'")
    If ResultadoX.Available = True Then
      
      Application.Busy = 1
    
      Do While ResultadoX.Available
    
     Print "resultadoX!texto=" & ResultadoX!texto
     Buscando = InStr(ResultadoX!texto, txtFiltro.Text)
     If Buscando = 0 Then Break
    
     Proceso1 = Mid(ResultadoX!texto, Buscando, Len(txtFiltro.Text))
  
     Proceso2 = Replace$(ResultadoX!texto, Proceso1, "<FONT><b>" & txtFiltro.Text & "</b></font>")
  
        txtEcapitulo.RichText &= "<FONT><b>(" & Xtabla.Name & " " & ResultadoX!capitulo & "." & ResultadoX!versiculo & ")</b></font>  " & Proceso2 & gb.NewLine
        Inc ContadorVersiculos
        ' DatosEncontrados = True
        ResultadoX.MoveNext
      Loop
      Application.Busy = 0
     Else
       ' Balloon.Info("No se encontraron resultados", txtFiltro)
     Endif
  Next

' If DatosEncontrados = False Then
'   Balloon("No se encontraron coincidencias", txtFiltro)
'      Wait 2
'      Balloon.Hide
'      txtFiltro.SetFocus
'      Return  
' Endif
LabContadorVers.Text = "Coicidencias encontradas " & ContadorVersiculos
  
End



Proceso2 = Replace$(ResultadoX!texto, Proceso1, "<FONT><b>" & txtFiltro.Text & "</b></font>")
  
        txtEcapitulo.RichText &= "<FONT><b>(" & Xtabla.Name & " " & ResultadoX!capitulo & "." & ResultadoX!versiculo & ")</b></font>  " & Proceso2 & gb.NewLine



 
última edición por v3ctor el Lunes, 25 May 2015, 03:24; editado 3 veces 
v3ctor - Ver perfil del usuario Enviar mensaje privado  
v3ctor [ Lunes, 25 May 2015, 03:17 ]
 


Ayuda Con Sensitive Case En Sql
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Ayuda Con Sensitive Case En Sql 
 
Pues lo más simple es convertir el campo todo a mayúsculas o todo a minúsculas antes de hacer la comparación:

Conexion.Exec("Select * from &1 where lower(`texto`) like '%&2%'", Xtabla.Name, lcase(txtFiltro.Text) ) 'si usas sqlite

Conexion.Exec("Select * from &1 where lcase(`texto`) like '%&2%'", Xtabla.Name, lcase(txtFiltro.Text) ) 'si usas mysql




 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Lunes, 25 May 2015, 09:20 ]
Responder citando    Descargar mensaje  
Mensaje Re: Ayuda Con Sensitive Case En Sql 
 
Shordi:

Para evitar la pequeña diferencia que tiene la instrucción en sqlite y mysql en esta parte:

..."Select * from &1 where lower(`texto`) ...


Donde encontramos lower y lcase, ¿ no podíamos usar una sentencia como lcase de gambas y concatenar ? .
No notaríamos diferencia entre los dos motores.  

Saludos



 
Shell - Ver perfil del usuario Enviar mensaje privado  
Shell [ Lunes, 25 May 2015, 09:45 ]
Responder citando    Descargar mensaje  
Mensaje Re: Ayuda Con Sensitive Case En Sql 
 
Como no hagas una consulta doble, no puedo ver cómo se haría eso. Tienes que hacer que la consulta compare el campo convertido a minúsculas con el texto convertido a minúsculas. Si no lo hace el servidor, lo tendría que hacer el cliente, está claro, lo que implicaría un proceso de comparativa en gambas más complicado. Para que sea ambivalente a las dos bases de datos sólo puedes hacer esto:

Conexion.Exec("Select * from &1 where " & iif(conexion.type="mysql","lcase","lower") & "(`texto`) like '%&2%'", Xtabla.Name, lcase(txtFiltro.Text) )


O esto:
if conexion.type="sqlite" then
    Conexion.Exec("Select * from &1 where lower(`texto`) like '%&2%'", Xtabla.Name, lcase(txtFiltro.Text) )
else
    Conexion.Exec("Select * from &1 where lcase(`texto`) like '%&2%'", Xtabla.Name, lcase(txtFiltro.Text) )
endif
 




 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Lunes, 25 May 2015, 10:02 ]
Responder citando    Descargar mensaje  
Mensaje Re: Ayuda Con Sensitive Case En Sql 
 
mira el operador ilike, no se si lo admiten todas las BD es case-insensitive.
SELECT nombre FROM cliente WHERE nombre LIKE '%va%';
 




 
angelnu - Ver perfil del usuario Enviar mensaje privado  
angelnu [ Lunes, 25 May 2015, 19:09 ]
Responder citando    Descargar mensaje  
Mensaje Re: Ayuda Con Sensitive Case En Sql 
 
Estoy buscando y jugando con los caracteres algunos de las posibles filtros.

Select * from '1Juan' where texto like 'sab%'  todo lo que empieza con sab al principio del parrafo (no en el medio o final)

Select * from '1Juan' where texto like '_i%'           todo lo que comienza con cualquier caracter seguido de la i

Select * from '1Juan' where texto like 'A_%'
  todo lo que comienza con la A y sigue con cualquier caracter

sigo investigando.....

tendre que recopilar mascaras de busquedas y después ver como las implemento en el programa



 
v3ctor - Ver perfil del usuario Enviar mensaje privado  
v3ctor [ Lunes, 25 May 2015, 21:02 ]
Responder citando    Descargar mensaje  
Mensaje Re: Ayuda Con Sensitive Case En Sql 
 
Ayer en el código que puse como ejemplo puse LIKE y es ILIKE.
SELECT nombre FROM cliente WHERE nombre ILIKE '%va%';
 

Yo lo utilizo y funciona muy bien, dicen que es lento en las búsquedas pero en mi Bd que es pequeña va como un tiro.



 
angelnu - Ver perfil del usuario Enviar mensaje privado  
angelnu [ Martes, 26 May 2015, 13:45 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 2 invitados
Usuarios registrados conectados: Ninguno


 



 

cron