latin1_icelandic_ci

26. mars 2008

MySQL kennt að starfrófsraða íslenskum texta kóðuðum skv. latin1 stafasettinu. Það er að segja leiðbeiningar um hvernig bæta skal latin1_icelandic_ci collation-inu við.

Fyrst þarf að bæta eftirfarandi við /usr/share/mysql/charsets/latin1.xml (inni í charsets og charset töggunum):

<collation name="latin1_icelandic_ci">
<map>
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 44 45 47 49 4C 4D 4E 4F 52 53 54 55 56 58
5B 5C 5D 5E 5F 60 63 64 65 66 69 6E 6F 70 71 72
73 41 44 45 47 49 4C 4D 4E 4F 52 53 54 55 56 58
5B 5C 5D 5E 5F 60 63 64 65 66 69 7B 7C 7D 7E 7F
80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
43 42 43 43 43 43 6B 46 4B 4A 4B 4B 51 50 51 51
48 57 5A 59 5A 5A 6C D7 6D 62 61 62 62 67 6A DF
43 42 43 43 43 43 6B 46 4B 4A 4B 4B 51 50 51 51
48 57 5A 59 5A 5A 6C F7 6D 62 61 62 62 67 6A 68
</map>
</collation>

Þetta er einfaldlega vörpun frá staftákninu til raðnúmers (hex). Vörpunartaflan gefur bókstafsröðunina: a, á, (àâãåä), b, c, ç, d, ð, e, é, (èêë), f, g, h, i, í, (ìîï), j, k, l, m, n, ñ, o, ó, (òôõ), p, q, r, s, t, u, ú, (ùûü), v, w, x, y, ý, ÿ, z, þ, æ, ö, ø.

Svo þarf að bæta eftirfarandi við /usr/share/mysql/Index.xml:

<charset name="latin1">
[…]
<collation name="latin1_icelandic_ci" id="250″ order="Icelandic" />
</charset>

Það þarf að tryggja að id-ið sem valið er sé laust. Lista yfir id sem eru í notkun er hægt að fá með SELECT id FROM information_schema.collations ORDER BY id;

Eftir að MySQL hefur verið restartað ætti nýja collation-ið að standa til boða.

mysql> SHOW COLLATION LIKE '%icelandic%';
+---------------------+---------+-----+---------+----------+---------+
| Collation           | Charset | Id  | Default | Compiled | Sortlen |
+---------------------+---------+-----+---------+----------+---------+
| latin1_icelandic_ci | latin1  | 250 |         |          |       0 |
| utf8_icelandic_ci   | utf8    | 193 |         | Yes      |       8 |
| ucs2_icelandic_ci   | ucs2    | 129 |         | Yes      |       8 |
+---------------------+---------+-----+---------+----------+---------+
3 rows in set (0.00 sec)

Íslandssaga og BIT_OR

13. febrúar 2004

Nú fer senn að líða að því að ég klári verkefni sem ég er að vinna fyrir Sagnfræðistofnun: Ritaskráin „Íslandssaga í greinum“. Formleg opnun verður líklega í næstu viku. En fyrst þarf ég að lagfæra nokkur smáatriði og keyra inn yfirfarna útgáfu af gagnasafninu.

Ég „uppgötvaði“ annars eitt nýtt í SQL í dag. Ef maður er með mengisdálk (SET) í töflu og vantar að vita hvaða stök eru sett (sammengið) í hluta af töflunni þá er hægt að nota fyrirspurn samsvarandi þessari:

SELECT BIT_OR( mengisdalkur) FROM tafla WHERE … ;

Þar sem mengisdálkar eru vistaðir sem tala þar sem hver biti stendur fyrir eitt stak mengisins þá er hægt að eða saman öll stök sem koma fyrir í dálkinum í fyrirspurninni.

Ég mun nota þetta til að sleppa flipum fyrir tóma tímabilsflokka í flettinu.

http://hugvis.hi.is/ritaskra/