Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠœΠΈΡ€ InterBase. АрхитСктура, администрированиС ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π² InterBase/FireBird/YaffilΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 23

Автор А Ковязин

Вносим ΡΡΠ½ΠΎΡΡ‚ΡŒ

Π£ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΎΡ‚ многочислСнных ΠΎΠΏΡ†ΠΈΠΉ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ InterBase с русскими Π±ΡƒΠΊΠ²Π°ΠΌΠΈ. ВСроятно, Π΄ΠΎΡ‡ΠΈΡ‚Π°Π² Π΄ΠΎ этого мСста, Π²Ρ‹ ΡƒΠΆΠ΅ достаточно Π·Π°ΠΏΡƒΡ‚Π°Π»ΠΈΡΡŒ Π²ΠΎ мноТСствС Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ внСсти ΡΡΠ½ΠΎΡΡ‚ΡŒ Π² эти понятия, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΈΡ… ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ.

Основа всСго - ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ InterBase, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠ»Π΅ Π΄ΠΎ 32767 Π±Π°ΠΉΡ‚. Однако Π±Π°ΠΉΡ‚Ρ‹ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π½Π΅ Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ символам, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСмах ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ для прСдставлСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ 1, 2 ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ 3 Π±Π°ΠΉΡ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ опрСдСляСм ΠΏΠΎΠ»Π΅ Ρ‚ΠΈΠΏΠ° CHAR ΠΈΠ»ΠΈ VARCHAR, Ρ‚ΠΎ ΠΌΡ‹ Π·Π°Π΄Π°Π΅ΠΌ количСство символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ, Π° количСство Π±Π°ΠΉΡ‚ΠΎΠ² опрСдСляСтся ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ символа для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° символов Для Π½Π°Π±ΠΎΡ€Π° символов WIN1251 любой символ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 1 Π±Π°ΠΉΡ‚, поэтому Ρ€Π°Π·ΠΌΠ΅Ρ€ поля Π² Π±Π°ΠΉΡ‚Π°Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ объявлСнной Π΄Π»ΠΈΠ½Π΅. А Π²ΠΎΡ‚ ΠΏΡ€ΠΈ использовании ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ UNICODE_FSS ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ символа составляСт 3 Π±Π°ΠΉΡ‚Π°; Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ Π΄Π»ΠΈΠ½Π° поля Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° ΡƒΡ‚Ρ€ΠΎΠ΅Π½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ. Π’Ρ‹ Π½Π΅ смоТСтС ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ UNICODE_FSS с Π΄Π»ΠΈΠ½ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 32767 div 3 = 10921 символ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ символа ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мСньшС максимального, использовавшСгося InterBase для расчСта Ρ€Π°Π·ΠΌΠ΅Ρ€Π° поля, Ρ‚. Π΅. Π²Ρ‹ смоТСтС Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ большС символов, Ρ‡Π΅ΠΌ Π΅Π³ΠΎ объявлСнная Π΄Π»ΠΈΠ½Π°!

Наборы символов (CHARACTER SET) - это фактичСски Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ физичСского прСдставлСния (Π³Π΄Π΅ ΠΎΠ΄ΠΈΠ½ символ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 ΠΈΠ»ΠΈ 3 Π±Π°ΠΉΡ‚Π°) Π² ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ (Ρ‚. Π΅. Ρ‚Π°ΠΊΠΎΠ΅, ΠΊΠ°ΠΊΠΈΠΌ эти символы хотят Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ клиСнтскиС прилоТСния).

Π’ InterBase сущСствуСт мноТСство Π½Π°Π±ΠΎΡ€ΠΎΠ² символов, ΠΏΠΎΠ»Π½Ρ‹ΠΉ список ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ InterBase. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ символов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для хранСния Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… символов Ρ€Π°Π·Π½ΠΎΠ΅ количСство Π±Π°ΠΉΡ‚. ΠŸΡ€ΠΎΡ‰Π΅ говоря, это Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ символу поставлСн Π² соотвСтствиС 1- ΠΈΠ»ΠΈ 2- ΠΈΠ»ΠΈ 3-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄.

Когда ΠΌΡ‹ создаСм символьноС ΠΏΠΎΠ»Π΅ ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π½Π°Π±ΠΎΡ€ символов явно ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ установок ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚ΠΎ Π² этом случаС ΠΌΡ‹ нСявно Π·Π°Π΄Π°Π΅ΠΌ, сколько символов помСстится Π² это ΠΏΠΎΠ»Π΅. НапримСр, Π½Π°Π±ΠΎΡ€ символов UNICODE_FSS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 2 Π±Π°ΠΉΡ‚Π° для кодирования русских Π±ΡƒΠΊΠ². Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΏΠΎΠ»Π΅, объявлСнноС ΠΊΠ°ΠΊ VARCHAR(255) CHARACTER SET UNICODE_FSS, количСство русских символов, Ρ€Π°Π²Π½ΠΎΠ΅ 255 * 3 div 2, Ρ‚. Π΅. 382.

Π”Π°Π»Π΅Π΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ символов (CHARACTER SET) ΠΈΠΌΠ΅Π΅Ρ‚ свой порядок сортировки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠžΡ‡Π΅Π½ΡŒ часто этот порядок сортировки Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡƒΡŽ Π² языкС сортировку ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… символов. НапримСр, русский Π½Π°Π±ΠΎΡ€ символов WIN1251 Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ сортируСт символы русского Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°, Ρ‚. Π΅. сортируСт ΠΈΡ… Π² порядкС слСдования Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² символов.

Как ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сортировку символов ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π°Π±ΠΎΡ€Π° символов? Для этого ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ порядки (ΠΈΠ»ΠΈ способы) сортировки Π½Π°Π±ΠΎΡ€ΠΎΠ² символов - Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ COLLATION ORDERS. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ COLLATION ORDER связаны Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ прСобразования Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΈ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° символов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ свои ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ порядки сортировки НапримСр, для самого распространСнного русского Π½Π°Π±ΠΎΡ€Π° символов WIN1251 ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° способа сортировки: WIN1251, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ задаСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ сортировка PWX_CYRL. Π’ порядкС сортировки PXW_CYRL ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ прописныС ΠΈ строчныС Π±ΡƒΠΊΠ²Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ вСс, Ρ‚. Π΅. этот порядок сортировки Π½Π΅ зависит ΠΎΡ‚ рСгистра символов (case insensitive). РусскиС Π±ΡƒΠΊΠ²Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС: аАбБвВ...яЯ.

Как устроСны способы сортировки? Π’ COLLATION ORDERS строится Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° пСрСсортировки, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ порядок (условный вСс) символов ΠΏΡ€ΠΈ сортировкС. И Π² этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ для прСдставлСния порядка символа ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ нСсколько Π±Π°ΠΉΡ‚ΠΎΠ² (2 ΠΈΠ»ΠΈ 3, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€). Π’ частности, Π² COLLATION ORDER WIN1251 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 1 Π±Π°ΠΉΡ‚ для прСдставлСния символа ΠΈ Π΅Π³ΠΎ порядка, Π° Π² ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ PWX_CYRL - Ρ†Π΅Π»Ρ‹Ρ… 3 Π±Π°ΠΉΡ‚Π°!

Π Π°Π·ΠΌΠ΅Ρ€ прСдставлСния вСса символа Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ порядка сортировки ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ использовании индСксов ΠΏΠΎ полям ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² индСксС хранятся Π½Π΅ исходныС ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки, Π° ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· строки Π½Π° основС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ сортировки. Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ»ΡŽΡ‡Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° исходной строки: Ρ‚Π°ΠΊ, для порядка сортировки PXW_CYRL Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ»ΡŽΡ‡Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС максимум Π² 3 Ρ€Π°Π·Π°, Ρ‡Π΅ΠΌ исходная строка. InterBase ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ коэффициСнт для ограничСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° индСкса ΠΏΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ полям. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ максимальном Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ индСкса 254 Π±Π°ΠΉΡ‚Π° Π²Ρ‹ Π½Π΅ смоТСтС ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ индСкс ΠΏΠΎ полю с Π΄Π»ΠΈΠ½ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ 254 div 3 = 84 символа ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ использованиС COLLATION ORDER ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Π΅Ρ‰ΡŒΡŽ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅ΠΉ достаточно ΠΌΠ½ΠΎΠ³ΠΈΡ… рСсурсов. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ вСсь вопрос Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ COLLATE ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ, прямо Π² тСкстС запроса, Π½Π΅ указывая Π΅Π³ΠΎ Π² самом ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ поля Когда ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π² запросС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для сортировки ΠΈΠ»ΠΈ привСдСния ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌΡƒ рСгистру ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ способ сортировки, Ρ‚ΠΎ InterBase сам достраиваСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· этого поля с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ способа

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ COLLATE Π² запросС ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ, ΠΏΡ€Π°Π²Π΄Π°, Π² этом случаС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован индСкс:


SELECT *

FROM table1

ORDER BY SYMBOLIC_FIELD1 COLLATE PXW_CYRL


Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ - для встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ UPPER.


SELECT UPPER(fieldl COLLATE PXW_CYRL) From tablel


Π­Ρ‚ΠΎΡ‚ способ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ: Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ лишь сами символы, Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ порядок сортировки ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° это трСбуСтся.

Русификация клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ InterBase

Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ с русификациСй Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… InterBase ΠΈ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ символов Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ вопрос ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ клиСнтскиС прилоТСния ΠΌΠΎΠ³Π»ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ здСсь ΠΎΡ‡Π΅Π½ΡŒ простой: ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² клиСнтских прилоТСниях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ символов, ΠΊΠ°ΠΊ ΠΈ Π² самой Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этом случаС ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° экранС Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… символов, Π° Π½Π΅ бСссмыслСнных Π·Π½Π°Ρ‡ΠΊΠΎΠ².

Бпособ указания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π½Π°Π±ΠΎΡ€ символов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ доступа. Для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ FEBPlus ΠΈ Π•Π’Π₯ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… с Π½Π°Π±ΠΎΡ€ΠΎΠΌ символов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, WIN125I, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ lc_type=WIN1251.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ WIN1251, Ρ‡Π΅Ρ€Π΅Π· Borland Database Engine Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… псСвдонима LANGDRJVER=PDOX ANSI Cyrr.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· JDBC Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² настройках Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° строку charset=cp!251 (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. Π² Π³Π»Π°Π²Π΅ "Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° InterBase Π½Π° Java" (Ρ‡. 3)).

БобствСнныС Π½Π°Π±ΠΎΡ€Ρ‹ символов ΠΈ способы сортировки

Π‘Π°ΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ хранятся Π² Ρ„Π°ΠΉΠ»Π΅ gdsintl.dll, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ %INTERBASE%\Intl. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ свои собствСнныС Π½Π°Π±ΠΎΡ€Ρ‹ символов ΠΈ COLATION ORDERS Π² InterBase ΠΈ Π²ΠΎ всС Π΅Π³ΠΎ ΠΊΠ»ΠΎΠ½Ρ‹. Для ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнтарий, ссылки Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½Π° сайтС www InterBase-world.com.

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ?

Π’ этой ΠΊΠ½ΠΈΠ³Π΅ практичСски Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Π»Π°Π²Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ½ΠΈΠ·Ρ‹Π²Π°Π΅Ρ‚ всю Ρ‚Π΅ΠΎΡ€ΠΈΡŽ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ всСгда, Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π²Π΅Π·Π΄Π΅ - Π²ΠΎΡ‚ Π»ΠΎΠ·ΡƒΠ½Π³ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π‘Π£Π‘Π”.

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ само ΠΏΠΎ сСбС Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ простоС ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅.

Вранзакция - это логичСский Π±Π»ΠΎΠΊ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Π±Π»ΠΎΠΊΠ΅

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· свойств. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ даСтся ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ±Ρ‚Π΅ΠΊΠ°Π΅ΠΌΠΎΠ΅, транзакция - ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, логичСски выполняСмая ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅. Вранзакция ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ свойствами атомарности, согласованности, изоляции ΠΈ долговрСмСнности (ΠΏΠΎ-английски ACID - Atomicity, Consistency, Isolation, Durability).

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ - это INSERT/UPDATE/DELETE ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, SELECT. Если транзакция ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, Ρ‚ΠΎ говорят, Ρ‡Ρ‚ΠΎ эти дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² контСкстС Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Вторая Ρ‡Π°ΡΡ‚ΡŒ опрСдСлСния гласит: - "ΠŸΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Π±Π»ΠΎΠΊΠ΅". Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ваТная Ρ‡Π°ΡΡ‚ΡŒ, содСрТащая Π² сСбС ΡΡƒΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π­Ρ‚Ρƒ Ρ‡Π°ΡΡ‚ΡŒ опрСдСлСния ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π½ΠΈΠΆΠ΅ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ классичСским ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π΄Π΅Π½Π΅Π³ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ счСта Π² Π±Π°Π½ΠΊΠ΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Когда ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π΄Π΅Π½Π΅Π³, Ρ‚ΠΎ начинаСтся транзакция. Π”Π΅Π½ΡŒΠ³ΠΈ ΡΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ со счСта-источника ΠΈ пСрСводятся Π½Π° счСт-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ. Когда ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ дСньги ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹, транзакция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, Ρ‚. Π΅. ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ происходит "ΡƒΠ·Π°ΠΊΠΎΠ½ΠΈΠ²Π°Π½ΠΈΠ΅" ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π΄Π΅Π½Π΅Π³. Если ΠΆΠ΅ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ этап ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π½Π΅ состоялся, Ρ‚ΠΎ транзакция откатываСтся ΠΈ всС ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² Π΅Π΅ Ρ€Π°ΠΌΠΊΠ°Ρ… измСнСния ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Волько послС подтвСрТдСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠ΅ Π½Π° счСт дСньги станут "Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ" (Π° ΡƒΡˆΠ΅Π΄ΡˆΠΈΠ΅ со счСта - Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ исчСзнут).