Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    [MYSQL] Problema Like con alcune lettere

    Ho una query molto semplice dove vorrei filtrare le ragioni sociali che iniziano per una determinata lettera.
    La cosa buffa è che mi funziona al 90%

    Per esempio:

    codice:
    SELECT ragionesoc, idcliente FROM clienti WHERE ragionesoc LIKE 'J%' ORDER BY ragionesoc asc
    Come output ho tute le ragioni sociali che iniziano sia con J ma anche con I (stessa cosa se metto LIKE 'I%')

    Stesso problema con U e V, mentre le altre lettere funzionano.

    Grazie a chi ha idee

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Quote Originariamente inviata da Sonikag Visualizza il messaggio
    Ho una query molto semplice dove vorrei filtrare le ragioni sociali che iniziano per una determinata lettera.
    La cosa buffa è che mi funziona al 90%

    Per esempio:

    codice:
    SELECT ragionesoc, idcliente FROM clienti WHERE ragionesoc LIKE 'J%' ORDER BY ragionesoc asc
    Come output ho tute le ragioni sociali che iniziano sia con J ma anche con I (stessa cosa se metto LIKE 'I%')

    Stesso problema con U e V, mentre le altre lettere funzionano.

    Grazie a chi ha idee
    Ciao,
    devi controllare la collation del tuo database, ci sono alcune collation che equiparano la I e la J

    Vedi questo link

    codice HTML:
    For Classical Latin collations that are accent-insensitive, I and J compare as equal, and U and V compare as equal. I and J, and U and V compare as equal on the base letter level. In other words, J is regarded as an accented I, and U is regarded as an accented V.

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie
    Dunque la codifica caratteri è un utf8_roman_ci Europeo Occidentale, case-insensitive
    Non ho trovato come verificare e/o modificare la coolations, ma sicuramente il problema è li!

  4. #4
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Quote Originariamente inviata da Sonikag Visualizza il messaggio
    Grazie
    Dunque la codifica caratteri è un utf8_roman_ci Europeo Occidentale, case-insensitive
    Non ho trovato come verificare e/o modificare la coolations, ma sicuramente il problema è li!
    Ciao,
    per cambiare la collation al tuo database devi eseguire questa riga:

    In questo esempio la imposti uft8mb4 con collate in unicode

    [COLOR=var(--highlight-keyword)]ALTER[/COLOR] DATABASE <database_name> [COLOR=var(--highlight-namespace)]CHARACTER[/COLOR] [COLOR=var(--highlight-keyword)]SET[/COLOR] utf8mb4 [COLOR=var(--highlight-keyword)]COLLATE[/COLOR] utf8mb4_unicode_ci;

    Puoi ovviamente cambiarla anche alla singola tabella ma conviene averne una per database

  5. #5
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie!
    La stringa mi da un errore di sintassi. (Ovviamente ho sostituito <database_name> con il nome del mio db.
    Comunque ho guardato un po' e ho impostato per tutto il db e per le signole tabelle utf8mb4_unicode_ci come codifica caratteri, ma ho ancora il problema.

  6. #6
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Quote Originariamente inviata da Sonikag Visualizza il messaggio
    Grazie!
    La stringa mi da un errore di sintassi. (Ovviamente ho sostituito <database_name> con il nome del mio db.
    Comunque ho guardato un po' e ho impostato per tutto il db e per le signole tabelle utf8mb4_unicode_ci come codifica caratteri, ma ho ancora il problema.
    Ciao,
    io ho provato questa cosa:

    -- Creazione della tabella
    create table test (info varchar(100));

    -- Inserimento in tabella di due valori CRITICI
    insert into test values ('III');
    insert into test values ('JJJ');

    -- Select effettuate forzando la collate
    SELECT * FROM test where info like 'J%' collate utf8_roman_ci;
    SELECT * FROM test where info like 'J%' collate utf8_general_ci;

    Se la seconda ti funziona, allora la collate che stai usando non va bene

  7. #7
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    http://192.168.0.209/phpmyadmin/themes/dot.gif


    Ho provato le query sulle mie tabelle e ho questi errori. Sto guardando le opzioni e non vedo come cambiare la collation, ma solo il character set

    Messaggio di MySQL: http://192.168.0.209/phpmyadmin/themes/dot.gif

    #1253 - COLLATION 'utf8_roman_ci' is not valid for CHARACTER SET 'utf8mb4'
    Messaggio di MySQL: http://192.168.0.209/phpmyadmin/themes/dot.gif

    #1253 - COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4'

  8. #8
    Sonikag, lo sai, sì, che 192.168.x.x è un indirizzo locale del tuo PC che vedi solo tu?

  9. #9
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Ha ha ha si! Non ci avevo fatto caso! nella risposta veloce ho fatto un copia e incolla e non apppariva! Comunque non centra nulla è solo la gif di un punto.
    Sono diventata scema perchè il messaggio di errore spariva con un clic, per cui dovevo selezionare e fare copia da tastiera.

    Comunque il messaggio di errore è sempre: #1253 - COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4'

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.