Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / NCHAR и UPPER/LOWER / 15 сообщений из 15, страница 1 из 1
25.04.2007, 12:54
    #34486138
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Возможно я похож на идиота (а может им и являюсь :)), но у меня не работают UPPER/LOWER для поля типа NCHAR.
То есть SELECT UPPER(<NCHAR_Field>) FROM <Table> возвращает мне строку в первозданном виде. Если текст в ней - русский. Для английского - все как и ожидаем. Где, как и чем мне выпрямить руки?
...
Рейтинг: 0 / 0
25.04.2007, 13:01
    #34486182
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Евгений ФадеевВозможно я похож на идиота (а может им и являюсь :)), но у меня не работают UPPER/LOWER для поля типа NCHAR.
То есть SELECT UPPER(<NCHAR_Field>) FROM <Table> возвращает мне строку в первозданном виде. Если текст в ней - русский. Для английского - все как и ожидаем. Где, как и чем мне выпрямить руки?локали какие?
...
Рейтинг: 0 / 0
25.04.2007, 15:55
    #34486936
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Такие функции работают только в рамках локали, т.ч. Денис прав - проверьте свои локали, как БД, так и клиента.
Посмотреть, какая буква в какую (точнее, какой код в какой) будет преобразовываться (и какие вообще буквы считать маленькими, а какие большими :) можно в описании соответствующей локали, например для Ru_ru и кодировки 1251 см. файл %Informixdir%\gls\lc11\ru_ru\04e3.lc а в нем разделы upper, lower, toupper, tolower...
...
Рейтинг: 0 / 0
25.04.2007, 18:57
    #34487679
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Журавлев Денис Евгений ФадеевВозможно я похож на идиота (а может им и являюсь :)), но у меня не работают UPPER/LOWER для поля типа NCHAR.
То есть SELECT UPPER(<NCHAR_Field>) FROM <Table> возвращает мне строку в первозданном виде. Если текст в ней - русский. Для английского - все как и ожидаем. Где, как и чем мне выпрямить руки?локали какие?Как и где это посмотреть? *как неприятно чувствовать себя ламером*
...
Рейтинг: 0 / 0
26.04.2007, 08:51
    #34488463
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
есть локейл базы 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
...
Рейтинг: 0 / 0
26.04.2007, 09:01
    #34488482
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Вот например как у меня под линуксом это выглядит:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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 не хочет работать :( клиент старый.
...
Рейтинг: 0 / 0
26.04.2007, 09:23
    #34488529
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Евгений ФадеевКак и где это посмотреть? *как неприятно чувствовать себя ламером*Самое главное что ты можешь перебороть себя и задать вопрос.

PS: echo $LANG -- ланг тут не при чем, это переменная OS.
...
Рейтинг: 0 / 0
26.04.2007, 11:53
    #34489136
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Журавлев Денисесть локейл базы 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
- Доктор это конец?
...
Рейтинг: 0 / 0
26.04.2007, 11:56
    #34489152
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Журавлев Денис Евгений ФадеевКак и где это посмотреть? *как неприятно чувствовать себя ламером*Самое главное что ты можешь перебороть себя и задать вопрос.С этим проблем нет (я уже давно не мальчик, так что не знать - не стыдно)

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

echo $LANG
LANG: Undefined variable.

Но у нас Solaris, а не Linux
...
Рейтинг: 0 / 0
26.04.2007, 11:57
    #34489159
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Евгений Фадеев Журавлев Денис Евгений ФадеевКак и где это посмотреть? *как неприятно чувствовать себя ламером*Самое главное что ты можешь перебороть себя и задать вопрос.С этим проблем нет (я уже давно не мальчик, так что не знать - не стыдно)

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

echo $LANG
LANG: Undefined variable.

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

set | grep LOCALE
...
Рейтинг: 0 / 0
26.04.2007, 11:58
    #34489162
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Евгений ФадеевО-оу! Что я вижу! en_US.819Плохо, она вообще наверно семибитная.
Евгений Фадеев- Доктор это конец?Ну не конец, а размер у базы какой?
...
Рейтинг: 0 / 0
26.04.2007, 11:59
    #34489169
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Евгений ФадеевЛажа. Пишет вот что:

echo $LANG
LANG: Undefined variable.

Но у нас Solaris, а не LinuxЗабудь, к делу отношения вообще не имеет.
...
Рейтинг: 0 / 0
26.04.2007, 12:18
    #34489244
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Евгений ФадеевО-оу! Что я вижу! en_US.819
- Доктор это конец?
Извините, навеяло :)
---------
Пациент на операционном столе
- Доктор, я умру?
- А как же! Обязательно умрете, вопрос только когда?
---------
Не все так страшно, но изменить локаль существующей БД уже нельзя.
Для смены локали необходимо выгрузить БД утилитой dbexport, проверить корректность данных, особенно связанных с особенностями языка, и загрузить снова dbimport в уже локализованную БД.
Желательно при выгрузке уже сразу устанавливать даты нужного формата, десятичный разделитель.
Вам очень нужно почитать существующий FAQ по этим вопросам
http://www.sql.ru/faq/faq.aspx?id=549
...
Рейтинг: 0 / 0
27.04.2007, 17:31
    #34493722
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
vasilisНе все так страшно, но изменить локаль существующей БД уже нельзя.
Для смены локали необходимо выгрузить БД утилитой dbexport, проверить корректность данных, особенно связанных с особенностями языка, и загрузить снова dbimport в уже локализованную БД.
Желательно при выгрузке уже сразу устанавливать даты нужного формата, десятичный разделитель.
Вам очень нужно почитать существующий FAQ по этим вопросам
http://www.sql.ru/faq/faq.aspx?id=549 За ссылку спасибо, как-то я не глянул в FAQ сразу, а, похоже, придется плотно смотреть...
Выход нас не устроит (судя по всему). Возможностей таких нет :((
...
Рейтинг: 0 / 0
27.04.2007, 17:32
    #34493726
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NCHAR и UPPER/LOWER
Журавлев Денис Евгений ФадеевО-оу! Что я вижу! en_US.819Плохо, она вообще наверно семибитная.
Евгений Фадеев- Доктор это конец?Ну не конец, а размер у базы какой?где-то 600-700 гиг
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / NCHAR и UPPER/LOWER / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]