Qual è la differenza tra collation e set di caratteri?

22

Ho una domanda generale sui database. Di solito usiamo il termine collation con i database. Mi piacerebbe sapere come è diverso dal set di caratteri. Immagino che la collazione sia un sottoinsieme del set di caratteri. Se è vero, qual è lo scopo più regole di confronto sotto un set di caratteri.

    
posta Shameer 22.07.2011 - 06:34
fonte

2 risposte

24

Set di caratteri è un elenco di simboli. Se confronti ASCII in latin1 , con latin1 sarai in grado di scrivere tutte le parole americane perché latin1 contiene tutte Caratteri ASCII , sufficienti per scrivere qualsiasi parola inglese. Al contrario, con ASCII non sarai in grado di scrivere tutte le parole delle lingue specifiche dell'Europa occidentale, perché ad esempio mancano caratteri come "À", "ë", "õ", "Ñ" .

Collation riguarda il confronto tra i personaggi. Definisce un insieme di regole per confrontare i caratteri di un set di caratteri.

In MySQL, le regole di confronto sono spesso correlate a una lingua (ad esempio "latin1_swedish_ci", "latin1_german1_ci", ecc.). Quando ordini una query di selezione, una parola che inizia con "ö" sarà posizionata tra due parole che iniziano con "o" e "p" in alcune lingue (con alcune regole di confronto). Ma con un'altra collazione, questo personaggio può essere collocato completamente alla fine, il che rende la selezione risultante diversa.

    
risposta data 22.07.2011 - 06:56
fonte
5

Come la risposta precedente, il set di caratteri è un insieme di caratteri (lettere, numeri, ideogrammi, ecc.) assegnati a un numero; per poterli vedere, devi avere il font (le piccole "immagini" che leggiamo). Erano importanti usando LatinX, perché per ogni X, lo stesso numero (byte) poteva riferirsi a un altro carattere.

Al giorno d'oggi è più importante selezionare la codifica: lo standard è UTF-8, la rappresentazione di maggior successo di Unicode (compatibile con ASCII ma così flessibile da includere tutti i linguaggi, anche cinesi e giapponesi) e lo standard W3C. In altre parole, include tutti i set di caratteri.

Collazione: è una parola vecchio stile, derivata dal latino. Significa: confronta una copia (manoscritto) con l'originale per trovare le differenze (errori o modifiche). È stato molto utile in passato, ma ora è quasi un arcaismo perché i nostri documenti e libri sono scritti utilizzando computer e la copia è sempre identica all'originale. Esempio: in italiano (derivato dal latino) c'è il verbo "collazionare", ma è nei dizionari e nessuno lo usa.

Quindi, la collation definisce il comportamento degli operatori di confronto: =, & gt ;, & lt ;, < =, > = ...

Ovviamente quegli operatori sono abituati a decidere se due stringhe sono uguali, o se una parola è "maggiore" di un'altra, molto importante se vogliamo ordinare. Le lettere non sono nello stesso ordine per ogni lingua, quindi una parola può essere maggiore di un'altra usando una collazione, ma non ne usa un'altra. Vedi [1] per un esempio pratico.

  • le regole di confronto "bin" sono le più restrittive: SELECT "b"="B" = > FALSE

  • le regole di confronto "ci" non sono case sensitive: SELECT "b"="B" = > TRUE

  • il "generale" tende a ignorare alcune differenze: SELECT "a"="à" = > TRUE

  • altro sono specifici per una o più lingue. Esempio "svedese" (non so perché lo svedese sia spesso un default)

Sto ancora cercando un sito web in cui il comportamento di ogni collation sia descritto in dettaglio ... questi esempi sono dovuti alla mia esperienza.

[1]

    
risposta data 21.03.2014 - 09:31
fonte

Leggi altre domande sui tag