1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Query SQLite

Discussão em 'Programação' iniciada por capricorn, 8 de Abril de 2008. (Respostas: 7; Visualizações: 2405)

  1. capricorn

    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
     
  2. Acho que se quiseres procurar com acentos vais ter de fazer várias pesquisas. Ou então guardar os nomes na base de dados sem os acentos.
     
  3. 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.
     
  4. metralha761

    metralha761 1st Folding then Sex

    em mysql vai buscar com acentos. sera dessa basedados?
     
  5. 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...
     
  6. capricorn

    capricorn Power Member

    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?
     
  7. Parafuso

    Parafuso Power Member

    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: 12 de Abril de 2008
  8. capricorn

    capricorn Power Member

    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: 12 de Abril de 2008

Partilhar esta Página