Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Informix Новый топик    Ответить
 NCHAR и UPPER/LOWER  [new]
Евгений Фадеев
Member [заблокирован]

Откуда: Russia, Moscow
Сообщений: 2374
Возможно я похож на идиота (а может им и являюсь :)), но у меня не работают UPPER/LOWER для поля типа NCHAR.
То есть SELECT UPPER(<NCHAR_Field>) FROM <Table> возвращает мне строку в первозданном виде. Если текст в ней - русский. Для английского - все как и ожидаем. Где, как и чем мне выпрямить руки?
25 апр 07, 12:54    [4067859]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
Евгений Фадеев
Возможно я похож на идиота (а может им и являюсь :)), но у меня не работают UPPER/LOWER для поля типа NCHAR.
То есть SELECT UPPER(<NCHAR_Field>) FROM <Table> возвращает мне строку в первозданном виде. Если текст в ней - русский. Для английского - все как и ожидаем. Где, как и чем мне выпрямить руки?
локали какие?
25 апр 07, 13:01    [4067936]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
vasilis
Member

Откуда: Украина, Киев
Сообщений: 2205
Такие функции работают только в рамках локали, т.ч. Денис прав - проверьте свои локали, как БД, так и клиента.
Посмотреть, какая буква в какую (точнее, какой код в какой) будет преобразовываться (и какие вообще буквы считать маленькими, а какие большими :) можно в описании соответствующей локали, например для Ru_ru и кодировки 1251 см. файл %Informixdir%\gls\lc11\ru_ru\04e3.lc а в нем разделы upper, lower, toupper, tolower...
25 апр 07, 15:55    [4069442]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
Евгений Фадеев
Member [заблокирован]

Откуда: Russia, Moscow
Сообщений: 2374
Журавлев Денис
Евгений Фадеев
Возможно я похож на идиота (а может им и являюсь :)), но у меня не работают UPPER/LOWER для поля типа NCHAR.
То есть SELECT UPPER(<NCHAR_Field>) FROM <Table> возвращает мне строку в первозданном виде. Если текст в ней - русский. Для английского - все как и ожидаем. Где, как и чем мне выпрямить руки?
локали какие?
Как и где это посмотреть? *как неприятно чувствовать себя ламером*
25 апр 07, 18:57    [4070611]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
есть локейл базы DB_LOCALE, есть клиента CLIENT_LOCALE (если они разные, то информикс будет пытаться перекодировать, например koi8->1251).

DB_LOCALE -- задается при создании бд и эта информация хранится в sysmaster
echo "select * from sysdbslocale where dbs_dbsname='a'"|dbaccess sysmaster

CLIENT_LOCALE -- задается соотвественно на клиенте в setnet32 (реестре), в odbc, в jdbc, а можно при установлении соеднинения задать. Все зависит от того как в программе у вас сделано.

Обычно (для виндоус) задают такие (в setnet32):
CLIENT_LOCALE=ru_ru.1251
DB_LOCALE=ru_ru.1251


--
конечно в третьем тысячилетии все это слегка дико звучит, особенно если echo $LANG ru_RU.UTF-8

Сообщение было отредактировано: 26 апр 07, 09:14
26 апр 07, 08:51    [4071772]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
Вот например как у меня под линуксом это выглядит:
informix@nag:~> echo $LANG
ru_RU.KOI8-R
informix@nag:~> echo $CLIENT_LOCALE
ru_RU.koi-8

informix@nag:~> echo "select upper('гыгы') from table(set{1})"|dbaccess a
(constant)

ГЫГЫ


informix@nag:~> echo "select * from sysdbslocale where dbs_dbsname='a'"|dbaccess sysmaster
dbs_dbsname a
dbs_collate ru_RU.1251




CLIENT_LOCALE=ru_RU.utf8 не хочет работать :( клиент старый.

Сообщение было отредактировано: 26 апр 07, 09:09
26 апр 07, 09:01    [4071797]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
Евгений Фадеев
Как и где это посмотреть? *как неприятно чувствовать себя ламером*
Самое главное что ты можешь перебороть себя и задать вопрос.

PS: echo $LANG -- ланг тут не при чем, это переменная OS.

Сообщение было отредактировано: 26 апр 07, 09:24
26 апр 07, 09:23    [4071876]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
Евгений Фадеев
Member [заблокирован]

Откуда: Russia, Moscow
Сообщений: 2374
Журавлев Денис
есть локейл базы DB_LOCALE, есть клиента CLIENT_LOCALE (если они разные, то информикс будет пытаться перекодировать, например koi8->1251).

DB_LOCALE -- задается при создании бд и эта информация хранится в sysmaster
echo "select * from sysdbslocale where dbs_dbsname='a'"|dbaccess sysmaster

CLIENT_LOCALE -- задается соотвественно на клиенте в setnet32 (реестре), в odbc, в jdbc, а можно при установлении соеднинения задать. Все зависит от того как в программе у вас сделано.

Обычно (для виндоус) задают такие (в setnet32):
CLIENT_LOCALE=ru_ru.1251
DB_LOCALE=ru_ru.1251


--
конечно в третьем тысячилетии все это слегка дико звучит, особенно если echo $LANG ru_RU.UTF-8
О-оу! Что я вижу! en_US.819
- Доктор это конец?
26 апр 07, 11:53    [4073008]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
Евгений Фадеев
Member [заблокирован]

Откуда: Russia, Moscow
Сообщений: 2374
Журавлев Денис
Евгений Фадеев
Как и где это посмотреть? *как неприятно чувствовать себя ламером*
Самое главное что ты можешь перебороть себя и задать вопрос.
С этим проблем нет (я уже давно не мальчик, так что не знать - не стыдно)

Журавлев Денис
PS: echo $LANG -- ланг тут не при чем, это переменная OS.
Лажа. Пишет вот что:

echo $LANG
LANG: Undefined variable.

Но у нас Solaris, а не Linux
26 апр 07, 11:56    [4073031]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
sysmaster
Member

Откуда: moscow_dbs.dat
Сообщений: 452
Евгений Фадеев
Журавлев Денис
Евгений Фадеев
Как и где это посмотреть? *как неприятно чувствовать себя ламером*
Самое главное что ты можешь перебороть себя и задать вопрос.
С этим проблем нет (я уже давно не мальчик, так что не знать - не стыдно)

Журавлев Денис
PS: echo $LANG -- ланг тут не при чем, это переменная OS.
Лажа. Пишет вот что:

echo $LANG
LANG: Undefined variable.

Но у нас Solaris, а не Linux


set | grep LOCALE
26 апр 07, 11:57    [4073042]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
Евгений Фадеев
О-оу! Что я вижу! en_US.819
Плохо, она вообще наверно семибитная.
Евгений Фадеев
- Доктор это конец?
Ну не конец, а размер у базы какой?
26 апр 07, 11:58    [4073045]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
Евгений Фадеев
Лажа. Пишет вот что:

echo $LANG
LANG: Undefined variable.

Но у нас Solaris, а не Linux
Забудь, к делу отношения вообще не имеет.
26 апр 07, 11:59    [4073060]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
vasilis
Member

Откуда: Украина, Киев
Сообщений: 2205
Евгений Фадеев
О-оу! Что я вижу! en_US.819
- Доктор это конец?

Извините, навеяло :)
---------
Пациент на операционном столе
- Доктор, я умру?
- А как же! Обязательно умрете, вопрос только когда?
---------
Не все так страшно, но изменить локаль существующей БД уже нельзя.
Для смены локали необходимо выгрузить БД утилитой dbexport, проверить корректность данных, особенно связанных с особенностями языка, и загрузить снова dbimport в уже локализованную БД.
Желательно при выгрузке уже сразу устанавливать даты нужного формата, десятичный разделитель.
Вам очень нужно почитать существующий FAQ по этим вопросам
https://www.sql.ru/faq/faq.aspx?id=549
26 апр 07, 12:18    [4073188]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
Евгений Фадеев
Member [заблокирован]

Откуда: Russia, Moscow
Сообщений: 2374
vasilis
Не все так страшно, но изменить локаль существующей БД уже нельзя.
Для смены локали необходимо выгрузить БД утилитой dbexport, проверить корректность данных, особенно связанных с особенностями языка, и загрузить снова dbimport в уже локализованную БД.
Желательно при выгрузке уже сразу устанавливать даты нужного формата, десятичный разделитель.
Вам очень нужно почитать существующий FAQ по этим вопросам
https://www.sql.ru/faq/faq.aspx?id=549
За ссылку спасибо, как-то я не глянул в FAQ сразу, а, похоже, придется плотно смотреть...
Выход нас не устроит (судя по всему). Возможностей таких нет :((
27 апр 07, 17:31    [4080870]     Ответить | Цитировать Сообщить модератору
 Re: NCHAR и UPPER/LOWER  [new]
Евгений Фадеев
Member [заблокирован]

Откуда: Russia, Moscow
Сообщений: 2374
Журавлев Денис
Евгений Фадеев
О-оу! Что я вижу! en_US.819
Плохо, она вообще наверно семибитная.
Евгений Фадеев
- Доктор это конец?
Ну не конец, а размер у базы какой?
где-то 600-700 гиг
27 апр 07, 17:32    [4080883]     Ответить | Цитировать Сообщить модератору
Все форумы / Informix Ответить