Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите разобраться с CHECK value / 25 сообщений из 37, страница 1 из 2
06.09.2016, 09:44
    #39304217
crazypiggy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
Добрый день. Есть база созданная в кодировке UTF 8. Создаю домен в Ibexpert с указанием чарсет при подключении UTF 8
Код: sql
1.
2.
3.
4.
5.
CREATE DOMAIN SEX_DOMAIN AS
CHAR(1) CHARACTER SET UTF8
DEFAULT 'М'
NOT NULL
CHECK (value in ('М', 'Ж'))

Выдает ошибку Malformed string. Вроде это значит что данные идут не в юникоде.
Делаю по другому. Подключаюсь с указанием чарсет WIN1251. Домен создается нормально. Теперь пытаюсь в программе занести другое значение в это поле, не попадающее в условие. Вылетает ошибка нарушения check на английском а русские буквы кракозябрами. Подскажите что делать.
Delphi XE и FIBPlus
...
Рейтинг: 0 / 0
06.09.2016, 10:00
    #39304233
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
crazypiggy,

если база создана в кодировке UTF8 то указывать чарсет при определении домена не обязательно.

crazypiggyВыдает ошибку Malformed string. Вроде это значит что данные идут не в юникоде.
Скорее всего это обозначает что данные из IBE поступают не в юникоде.

crazypiggyПодключаюсь с указанием чарсет WIN1251.
это зря
...
Рейтинг: 0 / 0
06.09.2016, 10:28
    #39304252
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
crazypiggy,

а так не?
Код: sql
1.
2.
3.
4.
5.
CREATE DOMAIN DMN_BOOL AS
SMALLINT
DEFAULT 0
NOT NULL
CHECK (VALUE IN (0,1));
...
Рейтинг: 0 / 0
06.09.2016, 10:32
    #39304255
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
Дока так не?
Не. Известно же, что полов больше, чем 2. Вроде как 50 и более.
...
Рейтинг: 0 / 0
06.09.2016, 11:01
    #39304286
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
crazypiggy,

Я тоже считаю, что надо перейти на числа. На клиенте потом понадобится использовать разные языки, три символа и т.д. Вы себе мину замедленного действия готовите.
...
Рейтинг: 0 / 0
06.09.2016, 11:47
    #39304321
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
wadmanИзвестно же, что полов больше, чем 2.
смотрел недавно фильм, там было "Уважаемые дамы, господа, и те, кто еще не определился!".
KreatorXXI использовать разные языки, три символа и т.д
кстати да. использовать юникод, и вдруг в чек воткнуть русские буквы. Как-то не то.
...
Рейтинг: 0 / 0
06.09.2016, 12:00
    #39304334
crazypiggy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
Спасибо. Переделал на числа.
...
Рейтинг: 0 / 0
06.09.2016, 13:04
    #39304396
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
wadmanИзвестно же, что полов больше, чем 2. Вроде как 50 и более
Останется, в случае необходимости, дописать еще 48 цифр. Делов-то ...
...
Рейтинг: 0 / 0
06.09.2016, 13:41
    #39304410
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
Может кто в курсе, в 2.5.x будут функции, подобные ASCII_CHAR/ASCII_VAL, но для UNICODE и UTF8?
...
Рейтинг: 0 / 0
06.09.2016, 13:42
    #39304412
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
rdb_dev,

не надо нести бред. Название ASCII в функция не случайно
...
Рейтинг: 0 / 0
06.09.2016, 14:02
    #39304422
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
wadmanНе. Известно же, что полов больше, чем 2. Вроде как 50 и более.Вот только не надо сваливать в кучу sex и gender.
...
Рейтинг: 0 / 0
06.09.2016, 14:07
    #39304427
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
Симонов Денис, не понял, что ты имеешь в виду.
К примеру, есть база, созданная с чарсетом на базе ASCII + интернациональные символы и подключение к этой базе с соответствующим чарсетом, но внутри (в триггере или процедуре) надо создавать и сохранять строки с UTF8. Причем, в стоку UTF8 надо накидывать символы, которых нет в одной из интернациональных кодировок на базе ASCII, но существующие в UNICODE (например, для какой-нибудь хитрой программы выгрузки или отчета, подключающейся к базе с UTF8 и выдергивающей сформированные строки). Как это сделать, не имея функции типа UTF8_VAL()?
...
Рейтинг: 0 / 0
06.09.2016, 14:26
    #39304439
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
rdb_dev,

смешались в кучу кони, люди...
Зачем ты упоминаешь UNICODE и UTF8 в разных контекстах? Если ты имеешь ввиду кодировку UNICODE_FSS то лучше сразу забудь про неё, т.к. она устарела. В 4.0 наконец-то даже метаданные в UTF-8.

Теперь насчёт UTF8_VAL. Не мог бы ты привести пример что должна вернуть сия функция например для UTF8_VAL('ђ')
...
Рейтинг: 0 / 0
06.09.2016, 14:29
    #39304441
crazypiggy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
Симонов Денисcrazypiggy,

если база создана в кодировке UTF8 то указывать чарсет при определении домена не обязательно.

crazypiggyВыдает ошибку Malformed string. Вроде это значит что данные идут не в юникоде.
Скорее всего это обозначает что данные из IBE поступают не в юникоде.

crazypiggyПодключаюсь с указанием чарсет WIN1251.
это зря

А разве так нельзя делать. Я прочитал на сайте IBase
авторЯ могу работать с базой в UTF8 через WIN1251?
Разумеется, для этого достаточно указать чарсет соединения WIN1251. Данные будут идти на сервер в 1251, и автоматически перекодироваться в UTF8 при сохранении (при чтении – перекодироваться обратно в win1251). Это самый легкий вариант начала работы с юникодом. Также это подходящий вариант, если используете Delphi версии 2007 и ниже, и вы не хотите использовать никакие компоненты Unicode (например, tms), но планы перехода на Unicode есть.

Кстати, это не специальная особенность WIN1251 и UTF8. Вы можете использовать любую национальную кодировку точно таким же образом.
...
Рейтинг: 0 / 0
06.09.2016, 14:40
    #39304454
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
crazypiggy,

1. CREATE DOMAIN это метаданные.
2. Delphi XE прекрасно работает с юникодом. Зачем нужен лишний геморрой?
...
Рейтинг: 0 / 0
06.09.2016, 15:08
    #39304489
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
автор2. Delphi XE прекрасно работает с юникодом.
XE - да, но через UTF-16. Компоненты доступа - с огромным геморроем. По опыту в чарсет соединения проще запихнуть 1251 и не париться. Delphi сама преобразует что сможет.
...
Рейтинг: 0 / 0
06.09.2016, 15:10
    #39304493
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
Да, мой предыдущий пост относится в равной степени как к FIBPlus, так и к IBX в Delphi. С UTF8 у меня нормально работать получалось только в Lazarus с переделанными компонентами IBX от Rik.
...
Рейтинг: 0 / 0
06.09.2016, 15:10
    #39304494
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
Любезный,

ну не знаю. Когда писал примерчик на XE5 геморроя с FireDac по поводу UTF8 не было.
...
Рейтинг: 0 / 0
06.09.2016, 15:56
    #39304537
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
Симонов Денисrdb_dev, смешались в кучу кони, люди... Зачем ты упоминаешь UNICODE и UTF8 в разных контекстах?Затем, что UTF8, это тот же UNICODE, но размазанный по нескольким байтам определенным правилом - без всяких таблиц перекодировок символов.
Теперь насчёт UTF8_VAL. Не мог бы ты привести пример что должна вернуть сия функция например для UTF8_VAL('ђ')
Четырехбайтное целое, конечно же. Что же еще?
Вообще, в предыдущем сообщении я немного опечатался и написал UTF8_VAL, подразумевая UTF8_CHAR (это очевидно из контекста).
...
Рейтинг: 0 / 0
06.09.2016, 16:04
    #39304547
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
WildSeryВот только не надо сваливать в кучу sex и gender.GENDER: male
SEX: regularly
...
Рейтинг: 0 / 0
06.09.2016, 17:13
    #39304599
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
rdb_devЧетырехбайтное целое, конечно же. Что же еще? Составные символы кириллицы .
...
Рейтинг: 0 / 0
06.09.2016, 22:50
    #39304756
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
Basil A. Sidorov,

не вижу там Б, В...
...
Рейтинг: 0 / 0
07.09.2016, 08:40
    #39304832
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
rdb_devбудут функции, подобные ASCII_CHAR/ASCII_VAL, но для UNICODE и UTF8?
наверное, пока только через костыли.

Я у себя в процедуре, когда понадобилось проверять символ на принадлежность к кириллице, тупо использовал строку с кириллическими cимволами и функцию POSITION.
...
Рейтинг: 0 / 0
07.09.2016, 17:05
    #39305363
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
kdvне вижу там Б, В...Там есть "йо" и "иван-краткий"
Только важно не это, а то, что составные символы - реальность юникода, данная нам в стандартных таблицах.
...
Рейтинг: 0 / 0
07.09.2016, 17:11
    #39305371
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с CHECK value
Basil A. Sidorovважно не это, а то, что составные символы - реальность юникода, данная нам в стандартных
таблицах.

Но при этом все (включая саму Windows) воспринимают составные символы как два символа, а
не один.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите разобраться с CHECK value / 25 сообщений из 37, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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