Mostrar Minúsculas Y Mayúsculas Igualmente (sqlite3)


Objetivo: Mostrar Minúsculas Y Mayúsculas Igualmente (sqlite3)
buenas

SELECT * FROM palabras WHERE palabra='marcelo' COLLATE NOCASE


con la sentencia anterior nos mostrará tanto:

marcelo como, Marcelo como, maRcelo etc

ahora como sería si queremos hacer lo mismo pero con un filtro mediante where y like?
o se hace con algún pragma?


escucho sugerencias

Objetivo: Re: Mostrar Minúsculas Y Mayúsculas Igualmente (sqlite3)
SELECT * FROM palabras WHERE palabra LIKE '%Marcelo%'

PRAGMA case_sensitive_like=0

PRAGMA case_sensitive_like=1



esto funciona en las consulta de gambas pero no funciona en el programa, tal vez algo no hago bien


Public Sub PragmaSensitive(accion As Boolean)

If accion Then
Conexion.Exec("PRAGMA case_sensitive_like=1")
Else
Conexion.Exec("PRAGMA case_sensitive_like=0")
Endif

End

PragmaSensitive(chkbNoCase.Value)

ResultadoX2 = Conexion.Exec("Select * from '" & NomTablaX & "' where texto like '%" & EsteFiltro & "%'")

Objetivo: Re: Mostrar Minúsculas Y Mayúsculas Igualmente (sqlite3)
este es el contexto donde se encuentra la sentencia sql

Public Sub PragmaCaseSensitiveLike(accion As Boolean)

' PRAGMA case_sensitive_like = [true|false];
'PRAGMA case_sensitive_like = 1;
'Select * From 'Mateo' where texto like '%Padre%';

If accion Then
Conexion.Exec("PRAGMA case_sensitive_like=true")
Else
Conexion.Exec("PRAGMA case_sensitive_like=false")
Endif

End


Public Sub BuscarTexto(EsteFiltro As String, EstosLibros As Integer[])
Dim ResultadoX, ResultadoX2 As Result
Dim ContadorVersiculos, NumTabla, Buscando, InicioTitulo, FinTitulo, coincidencias, CoincidenciasLibro, iVeces, i As Integer
Dim iVersPorLibro, iTotalAT, iTotalNT As Integer
Dim NomTablaX, Titulo, TituloOK, ContadorCoincidencias As String
Dim Proceso1, Proceso2, Proceso3, Proceso4, Proceso5 As String
Dim AquiReferencias, ResultadosEncontrados As String
Dim PrimeraLinea As Boolean = True
Dim Encabezado As Boolean = True

ContenidoBusquedaGuardar = ""

FiltroLibros = EstosLibros

Inc Application.Busy

PragmaCaseSensitiveLike(chkbNoCase.Value) 'nueva linea


For Each NumTabla In FiltroLibros
ResultadoX = Conexion.Exec("select * from 'biblia'")

Do While ResultadoX.Available
If ResultadoX!indicelibro = NumTabla Then
NomTablaX = ResultadoX!nombretabla

'Select * From 'Mateo' where texto like '%Padre%';
ResultadoX2 = Conexion.Exec("Select * from '" & NomTablaX & "' where texto like '%" & EsteFiltro & "%'") ' original
' ResultadoX2 = Conexion.Exec("Select * from '" & NomTablaX & "' where texto like '%" & EsteFiltro & "%'") 'original

Encabezado = True
iVersPorLibro = 0 'contador por libro

If ResultadoX2.Available = True Then

Do While ResultadoX2.Available
Buscando = InStr(ResultadoX2!texto, EsteFiltro)
InicioTitulo = InStr(ResultadoX2!texto, "- ")
FinTitulo = InStr(ResultadoX2!texto, " -")

If chkVerRef.Value Then AquiReferencias = ResultadoX2!referencias

If InicioTitulo > 0 Then
Titulo = Left$(ResultadoX2!texto, FinTitulo + 2)
TituloOK = "<b><i>" & Titulo & "</i></b>"
Endif

If Buscando = 0 Then 'si no hay ninguna coicidencia pasa al siguiente dato
ResultadoX2.MoveNext
Continue
Endif

iVeces = 0

Do
i = String.InStr(ResultadoX2!texto, EsteFiltro, i + 1)
If i > 0 Then
Inc coincidencias
Inc CoincidenciasLibro
Inc iVeces

Select Case NumTabla 'contador por libro
Case 1 To 39
Inc iTotalAT
Case Else
Inc iTotalNT
End Select 'contador por libro
Endif

Loop Until i = 0

Proceso1 = Mid(ResultadoX2!texto, Buscando, Len(EsteFiltro))
Proceso2 = Replace$(Replace$(ResultadoX2!texto, Titulo, TituloOK), Proceso1, "<FONT><b>" & EsteFiltro & "</b></font>")
Proceso3 = Replace$(Proceso2, "[", "<FONT><b><i><sup>")
Proceso4 = Replace$(Proceso3, "]", "</sup></i></b></font>")
Proceso5 = Replace$(Proceso4, "*", "<FONT><b>*</b></font>")

If iVeces = 1 Then
If PrimeraLinea = True Then 'es true si es la primera linea es para evitar la primera linea vacia.
If chkVerRef.Value Then
ResultadosEncontrados = "<FONT><b>(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ")</b></font> " & Proceso5 & " <FONT><b>" & AquiReferencias & "</b></font>" & "<br>"
PrimeraLinea = False
Else
ResultadosEncontrados = "<FONT><b>(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ")</b></font> " & Proceso5 & "<br>"
PrimeraLinea = False
Endif
Else
If chkVerRef.Value Then
ResultadosEncontrados &= "<FONT><b>(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ")</b></font> " & Proceso5 & " <FONT><b>" & AquiReferencias & "</b></font>" & "<br>"
Else
ResultadosEncontrados &= "<FONT><b>(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ")</b></font> " & Proceso5 & "<br>"
Endif
Endif
Else
'entra en esta zona cuando hay mas de una coincidencia en un mismo versiculo.
If PrimeraLinea = True Then
ResultadosEncontrados = "<FONT><b>(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ")</b></font><FONT><b> " & iVeces & "</b></font> " & Proceso5 & "<br>"
PrimeraLinea = False
Else
ResultadosEncontrados &= "<FONT><b>(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ")</b></font><FONT><b> " & iVeces & "</b></font> " & Proceso5 & " <FONT><b>" & AquiReferencias & "</b></font>" & "<br>"
Endif
Endif

Inc iVersPorLibro 'contador por libro
Inc ContadorVersiculos
ResultadoX2.MoveNext
Loop

If Not bSinLibros Then
If CoincidenciasLibro > 0 Then lstBPorLibro.Add(NomTablaX & "(" & CoincidenciasLibro & ")") 'contador por libro DE PRUEBA
Endif

Endif
Endif
ResultadoX.MoveNext
CoincidenciasLibro = 0
Loop

Next

If Not bSinLibros Then lstBPorLibro.Add("Todos (" & coincidencias & ")", 0) 'contador por libro DE PRUEBAS
If Not bSinLibros Then lstBPorLibro.Add("Antiguo (" & iTotalAT & ")", 1) 'contador por libro
If Not bSinLibros Then lstBPorLibro.Add("Nuevo (" & iTotalNT & ")", 2) 'contador por libro

txtEBuscar1.RichText = ResultadosEncontrados
Wait 0.1
ContadorCoincidencias = MostrarCoincidencias(ContadorVersiculos, coincidencias)
ContenidoBusquedaGuardar &= ContadorCoincidencias & " (VisorRV1960 versión " & Application.Version & ")<br><br>" & txtEBuscar1.RichText
Dec Application.Busy

End

Objetivo: Re: Mostrar Minúsculas Y Mayúsculas Igualmente (sqlite3)
Creo que te lías innecesariamente. Si quieres búsqueda exacta, simplemente:
SELECT * FROM palabras WHERE palabra='marcelo'

Si quieres busqueda no sensible a mayúsculas y minúsculas:
SELECT * FROM palabras WHERE palabra LIKE 'marcelo'

Si quieres, además, buscar fragmentos de palabras (que contengan)
SELECT * FROM palabras WHERE palabra LIKE '%marcelo%'

O que empiecen por la cadena
SELECT * FROM palabras WHERE palabra LIKE 'marcelo%'

O que terminen por la cadena
SELECT * FROM palabras WHERE palabra LIKE '%marcelo'


El toqueteo de los pragmas te puede llevar a resultados espúreos por cuanto las igualdades de las cadenas pueden no ser correctas, etc. etc.

Perfil MP  

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.5408s (PHP: -48% SQL: 148%)
Consultas SQL: 45 - Debug off - GZIP Activado