Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7691
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 69 раз
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
Табличка показывает расчёт длины L для STRING(L) от значения N для NVARCHAR(N).
Разве длина STRING в Clarion чем-то отличается от длины STRING в SQL ?
Разве длина STRING в Clarion чем-то отличается от длины STRING в SQL ?
Make Clarion Great Again !
-
- ✯ Ветеран ✯
- Сообщения: 5082
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
Почему не проходит? Ошибку какую-то выдаёт?
ISO8859_1 - это обычная (почти) западноевропейская кодировка. Судя по Википедии - один байт на символ.NCHAR
Представляет собой символьный тип данных фиксированной длины с предопределённым
набором символов ISO8859_1.
Синтаксис:
NCHAR [(length)]
Синонимом является написание NATIONAL CHAR.
Аналогичный тип данных доступен для строкового типа переменной длины: NATIONAL
CHARACTER VARYING
We are hard at work… for you.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1397
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 9 раз
- Поблагодарили: 2 раза
- Контактная информация:
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
Это неправильный расчет!Игорь Столяров писал(а): ↑28 Ноябрь 2023, 13:35 Табличка показывает расчёт длины L для STRING(L) от значения N для NVARCHAR(N).
В UTF-8 символ занимает от 1 до 6 байтов!
Помните в xlsx не выгружался символ "№"? А это именно потому, что там расчет был по этой табличке и последний байт обрезался, так как "№" занимает 3 байта
Так что чтоб гарантированно влезло нужно L*6+1 (в реальной жизни хватит 4х символов, 6 вряд ли встретится)
-
- ✯ Ветеран ✯
- Сообщения: 5082
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
Строго говоря, Юникод не причём. Если в SQL задать столбец вот так - varchar(100), то длина в байтах будет зависеть от параметра "Character Set". В кодировке Win1252 это будет 100 байтов, а в кодировке, допустим, UTF8 вообще непонятно сколько, в зависимости от символов. Я к тому, что сама по себе задача нетривиальная перевести SQL-строку в Юникоде в банальную строку в Кларионе. Правильный путь - иметь тип данных такой же как и в SQL (с кодировкой Юникод). Т.е. если у меня в SQL varchar(100) в Юникоде, то в Кларионе должен быть USTRING(100). Независимо от того сколько это байт. Либо какая-то другая внутренняя реализация в Кларионе, допустим тупо держать четыре байта на символ. Про 6 байтов - не знаю откуда это.
We are hard at work… for you.
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
Расчет правильный, nvarchar - это UniCode, а не UTF-8RaFaeL писал(а): ↑28 Ноябрь 2023, 17:35Это неправильный расчет!Игорь Столяров писал(а): ↑28 Ноябрь 2023, 13:35 Табличка показывает расчёт длины L для STRING(L) от значения N для NVARCHAR(N).
В UTF-8 символ занимает от 1 до 6 байтов!
Помните в xlsx не выгружался символ "№"? А это именно потому, что там расчет был по этой табличке и последний байт обрезался, так как "№" занимает 3 байта
Так что чтоб гарантированно влезло нужно L*6+1 (в реальной жизни хватит 4х символов, 6 вряд ли встретится)
- ingasoftplus
- Ветеран
- Сообщения: 436
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 99 раз
- Поблагодарили: 6 раз
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
А кто что скажет про это??? пробовал но что то не работает, или я не умею его готовить??
- Игорь Столяров
- Ветеран движения
- Сообщения: 7691
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 69 раз
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
Как я понимаю: создание БД в UTF-16 (как на картинке) и тип данных NVARCHAR (который хранит данные в UNICODE) - это иное.
Make Clarion Great Again !
-
- ✯ Ветеран ✯
- Сообщения: 5082
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
Это опять же на будущее. Справку подготовили, а функционал нет.ingasoftplus писал(а): ↑29 Ноябрь 2023, 11:44 А кто что скажет про это??? пробовал но что то не работает, или я не умею его готовить??
А в чём разница? Посмотрите мой пост выше. Тип строкового поля никак не связан с Юникодом. Юникод это или не Юникод зависит от параметра "Character Set".
ingasoftplus, я так понимаю это сторонняя база. Что показывает Studio? Что там в этом поле записано?
We are hard at work… for you.
- ingasoftplus
- Ветеран
- Сообщения: 436
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 99 раз
- Поблагодарили: 6 раз
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
поясните плиз? где?
ну что значит - сторонняя?? своя mssql база. Студио показывает все правильно - все символы записаны верно
ну как же не связан? nvarchar уже и говорит - что в поле unicode
-
- ✯ Ветеран ✯
- Сообщения: 5082
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
Вот мой пост - https://forum.clarionlife.net/viewtopic ... 146#p52146. В MS SQL другая реализация?
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 5082
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
Ну вот для примера -
Два поля типа varchar, но с разными кодировкой и сортировкой (Коллате ).We are hard at work… for you.
- ingasoftplus
- Ветеран
- Сообщения: 436
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 99 раз
- Поблагодарили: 6 раз
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
а что за программу вы используете (на вашей картинке)???
-
- ✯ Ветеран ✯
- Сообщения: 5082
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Clarion Data Type Matching for SQL Servers - Соответствие типов Clarion типам SQL серверов
Это IBExpert для FireBird. Может у мелкомягких другие фантазии. Есть у нас сторонняя БД на MS SQL, мы с ней работаем. Вот так на стороне сервера:
Вот так у нас в словаре:
Всё работает. Но поля явно не Юникод. Описание на стороне сервера:
К сожалению плотно с MS SQL не работаю.We are hard at work… for you.