PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.
Moderadores: Administradores, Moderadores
por capricorn » Terça Abr 08, 2008 14:50
Olá a todos
Estou aqui com um pequeno stress numa base de dados sqlite.
A questão é que pretendo pesquisar nomes de utilizadores por aproximação e estou com problemas nos acentos.
Por exemplo, se pesquisar por "jose" quero que retorne a lista "José, Josefina,...", mas de momento não está a retornar o José...
A query em questão é a seguinte:
SELECT nome FROM utilizadores WHERE nome LIKE "%jose%";
alguém sabe como ultrapassar este problema?
PS: estou a utilizar c# com sqlite
-
capricorn
- Membro de Prata

-
- Mensagens: 383
- Registado: Sexta Ago 20, 2004 13:03
- Localização: Porto
por rgomes » Terça Abr 08, 2008 15:07
O caracter
e é diferente do
é.
Faz assim:
- Código: Seleccionar todos
SELECT nome FROM utilizadores WHERE nome LIKE "%jos%"
cumps
-

rgomes
- Membro de Prata

-
- Mensagens: 165
- Registado: Sexta Dez 16, 2005 19:27
por capricorn » Terça Abr 08, 2008 15:27
rgomes Escreveu:O caracter
e é diferente do
é.
Faz assim:
- Código: Seleccionar todos
SELECT nome FROM utilizadores WHERE nome LIKE "%jos%"
cumps
Obrigado pela resposta, mas o objectivo é ser o sql a descartar os acentos, o código era apenas um exemplo
-
capricorn
- Membro de Prata

-
- Mensagens: 383
- Registado: Sexta Ago 20, 2004 13:03
- Localização: Porto
por rgomes » Terça Abr 08, 2008 15:31
capricorn Escreveu:
Obrigado pela resposta, mas o objectivo é ser o sql a descartar os acentos, o código era apenas um exemplo
Desta maneira não dá. Como já tinha dito são caracteres diferentes, com id's diferentes.
-

rgomes
- Membro de Prata

-
- Mensagens: 165
- Registado: Sexta Dez 16, 2005 19:27
por SkylineGTR » Terça Abr 08, 2008 15:39
Cria uma função que pegue no nome, retire os acentos e retorne uma string já sem os acentos.
Penso que podes fazer isso pelo SQLite (que desconheço) ou pela tua aplicação.
Assim para o nome "José", aplicas uma função tipo RemoveAccent("José") que depois te devolve "Jose" para usares na comparação.
Em SQL Server podias usar uma collation.
Pesquisa por "accent insensitive queries" ou algo do género.
i7 920 | ASUS P6T Deluxe V2 | 6GB Corsair Dominator PC3-12800 | BFG GTX285 OC2 | 2x WD 640GB + WD 750GB + Seagate 750GB + Samsung F1 1TB | Corsair HX-620 | HP w2207 | Lian Li PC-V1110B
-
SkylineGTR
- Membro Vitalício

-
- Mensagens: 4184
- Registado: Terça Dez 28, 2004 22:26
por capricorn » Terça Abr 08, 2008 18:03
O problema é que os dados estão com acentos na base de dados.
Parece que não há uma solução simples
Vou tentar criar uma função em sqlite e depois posto aqui para verem
obrigado pelas respostas

-
capricorn
- Membro de Prata

-
- Mensagens: 383
- Registado: Sexta Ago 20, 2004 13:03
- Localização: Porto
por Fenrir » Quinta Abr 10, 2008 10:59
Como disseram os colegas do Forum, com acento e sem acento são chars diferentes, id's diferentes.
poderias fazer é no LIKE onde tem acento colocar %jos?%
mas apanhava josefina, jose, josa,joso .. percebes.. mas é a melhor solução possivel julgo.
Doutra forma não dá, como já foi dito, tipo de char diferente. Mas se encontrares porventura uma solução posta, acho que é bem interessante.
Cumps.
-

Fenrir
- Membro de Prata

-
- Mensagens: 354
- Registado: Segunda Set 20, 2004 22:33
- Localização: Porto
Voltar para Programação
Quem está ligado:
Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante