Query SQLite

capricorn

Power Member
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
 
Pois... Segundo sei não deves ter grande hipotese de resolver isso sem ser com varias pesquisas... Podes é acrescentar uma "imprecisão" e fazeres a query com
"SELECT nome FROM utilizadores WHERE nome LIKE "%jos%";", mas penso que esta nao seja a solução ideal.
 
Não dará com um OR?
Algo do género:
SELECT nome FROM utilizadores WHERE nome LIKE "%jose%" OR "%josé%"

Não sei se está bem escrito, nem se dá mesmo, mas tive de estudar um bocado disto para um exame e lembro-me de umas coisas...
 
Obrigado pelas respostas,
O Like, como já tinha dito, em sqlite diferencia os caracteres acentuados.
quanto a usar "or", tendo em conta q "josé" é apenas um exemplo e será uma variável, as combinações são mesmo muitas.
Tudo se deverá solucionar com uma função SQL.
Também vi qq coisa sobre COLLATE, alguém sabe como utilizar com o sqlite?
 
Collation Sequences Example

The examples below identify the collation sequences that would be used to determine the results of text comparisons that may be performed by various SQL statements. Note that a text comparison may not be required, and no collation sequence used, in the case of numeric, blob or NULL values.

Código:
CREATE TABLE t1(
        a,                 -- default collation type BINARY
        b COLLATE BINARY,  -- default collation type BINARY
        c COLLATE REVERSE, -- default collation type REVERSE
        d COLLATE NOCASE   -- default collation type NOCASE
    );

    -- Text comparison is performed using the BINARY collation sequence.
    SELECT (a = b) FROM t1;

    -- Text comparison is performed using the NOCASE collation sequence.
    SELECT (d = a) FROM t1;

    -- Text comparison is performed using the BINARY collation sequence.
    SELECT (a = d) FROM t1;

    -- Text comparison is performed using the REVERSE collation sequence.
    SELECT ('abc' = c) FROM t1;

    -- Text comparison is performed using the REVERSE collation sequence.
    SELECT (c = 'abc') FROM t1;

    -- Grouping is performed using the NOCASE collation sequence (i.e. values
    -- 'abc' and 'ABC' are placed in the same group).
    SELECT count(*) GROUP BY d FROM t1;

    -- Grouping is performed using the BINARY collation sequence.
    SELECT count(*) GROUP BY (d || '') FROM t1;

    -- Sorting is performed using the REVERSE collation sequence.
    SELECT * FROM t1 ORDER BY c;

    -- Sorting is performed using the BINARY collation sequence.
    SELECT * FROM t1 ORDER BY (c || '');

    -- Sorting is performed using the NOCASE collation sequence.
    SELECT * FROM t1 ORDER BY c COLLATE NOCASE;
 
Última edição pelo moderador:
Obrigado mas também sei pesquisar no google.

O objectivo era criar uma nova collate (por exemplo strip accent) que ignorasse os acentos nas comparações
 
Última edição pelo moderador:
Back
Topo