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.