Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Локализация / 14 сообщений из 14, страница 1 из 1
05.08.2005, 13:05
    #33204007
push
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
как сделать что бы разделитель дробной и целой части был запятой? хочу что бы такой запрос работал:
Код: plaintext
1.
insert into checker (chk, card, value) values ( 298 ,  10 , '0,25')
...
Рейтинг: 0 / 0
05.08.2005, 13:10
    #33204026
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
фчера на Аксовском форуме обсуждался футо-дюймовый формат данных. А вам кажисТь аж саженно-вершковый подавай?
...
Рейтинг: 0 / 0
05.08.2005, 13:13
    #33204040
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
ЗЫ: Может таки не путать морду с нутром? т.е. формат отображения в клиенте, и формат числа в СУБД (а сталбыть в скл)
...
Рейтинг: 0 / 0
05.08.2005, 13:15
    #33204053
push
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
очень ценный совет. еще бы по русски его озвучить)
...
Рейтинг: 0 / 0
05.08.2005, 13:41
    #33204156
Meta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
4321А вам кажисТь аж саженно-вершковый подавай?
Мне такой как раз нужен!!!
...
Рейтинг: 0 / 0
05.08.2005, 13:44
    #33204170
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
Meta 4321А вам кажисТь аж саженно-вершковый подавай?
Мне такой как раз нужен!!!?"как витрина магазина продовольственного"?
...
Рейтинг: 0 / 0
23.08.2005, 20:39
    #33230807
push
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
и все же господа, проблема не решена, вещественые числа принимаются только с точкой. в lc_numeric даже не знаю что написать, помогите!
...
Рейтинг: 0 / 0
23.08.2005, 21:08
    #33230825
_Vlado
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
pushкак сделать что бы разделитель дробной и целой части был запятой? хочу что бы такой запрос работал:
Код: plaintext
1.
insert into checker (chk, card, value) values ( 298 ,  10 , '0,25')
...
и все же господа, проблема не решена, вещественые числа принимаются только с точкой. в lc_numeric даже не знаю что написать, помогите!Я так понимаю, проблема в том, что текст запроса генерится в клиентском приложении, потому как руками в тексте скрипта или в psql
поставить точку не проблема.
Ну так в нём же и меняй на точку.
Например, в дельфях и билдере есть встроенная переменная DecimalSeparator.
Содержит выставленный в винде символ разделителя дробной части.
Его и меняй.
...
Рейтинг: 0 / 0
23.08.2005, 22:43
    #33230878
Igor K.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
У вас на разных клиентских машинах могуть стоять разные разделители для дробной части. И что делать серверу в таком случае? Короче, там должна быть именно точка по синтаксису, а ваша задача ее поставить. Не слишком сложная задача на любом языке. :)
...
Рейтинг: 0 / 0
24.08.2005, 13:48
    #33231777
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
pushкак сделать что бы разделитель дробной и целой части был запятой? ...........

Выше прозвучало уже, где нуна копать. Добавлю только следующую инфу... На стороне клиента, если юзать сишную точку доступа (libpq), то можно попросить данные в двоичном виде и строить свой парсер типизации постгресса, длины полей, превращение в интеловский формат записи. Более того, весчи типа Row Вам придёться ышо хитрее обрабатывать. Эта инфа даёт немного представление - в каком виде "плюёться сервак" данными. НИКАКИХ запятых (для НЕ текстовых полей) там НЕ наблюдаеться в ПРИНЦЕПЕ ! Если Вы хотите изменять формат сепараторов в получаемых (НЕ строковых) данных - думаю надо копать на клиенте постгресса, его настройки (либо обрабатывать у себя в программе).


удачи Вам
(круглый)
ЗЫ
Возможно Вам потребуеться централизованное представление в системе неких полей данных (что в общемто не есть гут, но иногда треба). Тогда конвертите всё на серваке в СТРОКОВОЕ представление и будет Вам счастье. Если искомого формата Вы не найдёте, то тогда постгресс позволяет Вам своять нечто на сях и подключить как внешнюю функцию к движку БД.
...
Рейтинг: 0 / 0
12.12.2005, 20:24
    #33431643
Локализация
нету добрых людей тут :)
а так надо решить с этой точкой дурацкой что-то
Понимаете ли - гораздо лучше было бы если настроить под нашу локаль постгрю, чем везде с заменой точки на зпт гемороиться. Это не сложно - нет. Токо скоко раз же прийдётся писать тупо одно и тоже - если можно наверное без этого
...
Рейтинг: 0 / 0
13.12.2005, 03:50
    #33431848
фффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
Неладно всё-таки на клиенте у вас. Но если передается именно литерал в кавычках можно:
а) либо сделать свой тип - обычный numeric type внутри, но с функцией конвертации, в которой запятая меняется на точку. IMHO это и имел в виду kolobok0, впрочем на C писать необязательно - функция может быть хоть на sql.
б) либо сделать так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE checker(chk int, card int, value float);

CREATE VIEW checker2 AS SELECT chk, card, value::text FROM checker;

CREATE OR REPLACE RULE checker2_ins AS ON insert
TO checker2 DO INSTEAD
  INSERT INTO checker(chk, card, value) VALUES (NEW.chk, NEW.card, replace(NEW.value,',','.')::float);

insert into checker2 (chk, card, value) values ( 298 ,  10 , '0,25');
select * from checker;
...
Рейтинг: 0 / 0
13.12.2005, 10:22
    #33432183
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
олег_ющлщюгшПонимаете ли - гораздо лучше было бы если настроить под нашу локаль постгрю, чем везде с заменой точки на зпт гемороиться. Это не сложно - нет. Токо скоко раз же прийдётся писать тупо одно и тоже - если можно наверное без этогозаведомо ложный посыл. Прорезаецца обычно при кривых, но шибко резвых руках клиентописца (т.е куча кода накодена, а оказалось - шо он увесь кривой).
Вам же сказалиУ вас на разных клиентских машинах могуть стоять разные разделители для дробной части. И что делать серверу в таком случае?. Один раз и навсегда для себя уясните, как формировать строку из клиента, и не будет никаких геммороев.
...
Рейтинг: 0 / 0
13.12.2005, 11:26
    #33432420
-me-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Локализация
олег_ющлщюгшнету добрых людей тут :)
а так надо решить с этой точкой дурацкой что-то
Понимаете ли - гораздо лучше было бы если настроить под нашу локаль постгрю, чем везде с заменой точки на зпт гемороиться. Это не сложно - нет. Токо скоко раз же прийдётся писать тупо одно и тоже - если можно наверное без этого
Без этого низзя!
LC_NUMERIC, LC_MONETARY, LC_TIME в сервере зафиксированы как "C" . И это правильно.

* Here is how the locale stuff is handled: LC_COLLATE and LC_CTYPE
* are fixed by initdb, stored in pg_control, and cannot be changed.
* Thus, the effects of strcoll(), strxfrm(), isupper(), toupper(),
* etc. are always in the same fixed locale.
*
* LC_MESSAGES is settable at run time and will take effect
* immediately.
*
* The other categories, LC_MONETARY, LC_NUMERIC, and LC_TIME are also
* settable at run-time. However, we don't actually set those locale
* categories permanently. This would have bizarre effects like no
* longer accepting standard floating-point literals in some locales.

* Instead, we only set the locales briefly when needed, cache the
* required information obtained from localeconv(), and set them back.
* The cached information is only used by the formatting functions
* (to_char, etc.) and the money type. For the user, this should all be
* transparent. (Actually, LC_TIME doesn't do anything at all right
* now.)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Локализация / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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