powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разделить на 1000 поле типа varchar
24 сообщений из 24, страница 1 из 1
Разделить на 1000 поле типа varchar
    #39288498
dron4253
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Помогите плиз!
Задача:

В таблице Empl есть поле sum(varchar2(4000 Byte)). В поле sum сумма 138928586,99. Подскажите как в тысячах рублей вывести значения из этого поля?
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39288504
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with t as (select '138928586,99' summ from dual)
select summ, to_number(summ,'9999999999999999999D999999999', q'[NLS_NUMERIC_CHARACTERS=', ']')/1000 s
from t

SUMM         S                                       
------------ --------------------------------------- 
138928586,99 138928.58699                            

1 rows selected
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39288507
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dron4253Подскажите как в тысячах рублей вывести значения из этого поля?

Найти запятую, переставить её на три позиции левее.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39288646
Partos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если запятой нет?
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39288677
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partos,

ищи точку
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39288704
dron4253
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

Выдаётся ошибка в Функции SQL использована неверная строка параметров NLS
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39288753
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dron4253andrey_anonymous,

Выдаётся ошибка в Функции SQL использована неверная строка параметров NLS

А если тупо скопировать, не пытаясь исправить?
Найдите десять отличий:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with t as (select '138928586,99' summ from dual)
select summ, to_number(summ,'9999999999999999999D999999999', q'[NLS_NUMERIC_CHARACTERS=',']')/1000 s
from t
Error report:
SQL Error: ORA-12702: invalid NLS parameter string used in SQL function
12702. 00000 -  "invalid NLS parameter string used in SQL function"
*Cause:    An unknown parameter name or invalid value is specified in a NLS
           parameter string.


with t as (select '138928586,99' summ from dual)
select summ, to_number(summ,'9999999999999999999D999999999', q'[NLS_NUMERIC_CHARACTERS=', ']')/1000 s
from t

SUMM         S                                       
------------ --------------------------------------- 
138928586,99 138928.58699                            

1 rows selected
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39289501
dron4253
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

Да всё верно. Но всё равно ошибка ORA-01722:неверное число
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39289510
dron4253
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

Маленькая поправочка: в поле summ есть следующие значения - 57; 15725362.54; null
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39289558
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dron4253andrey_anonymous,

Маленькая поправочка: в поле summ есть следующие значения - 57; 15725362.54; null
ну и как вы предполагаете арифметику над этой хренью?
проверяйте состав вашей строки и не обрабатывайте те, где нет, например ~(достаточного вам) количества цифр
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39289581
dron4253
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawish,
Ну вот как то надо придумать...не обрабатывать строки не подходящие нельзя...Вы же понимаете, что это не просто циферки...это суммы договоров, определённой организации...и нельзя просто взять и не обработать сумму по одному договору...то, что разработчик в с кривыми руками сделал это поле типа varchar (4000) это уже другой вопрос...
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39289591
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dron4253Ну вот как то надо придумать...
Ты таки попробуй найти запятую и переставить на три позиции левее.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39289597
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dron4253Вы же понимаете, что это не просто циферки...это суммы договоров
авторесть следующие значения - 57; 15725362.54; null
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39289627
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dron4253orawish,
Ну вот как то надо придумать...не обрабатывать строки не подходящие нельзя...Вы же понимаете, что это не просто циферки...это суммы договоров, определённой организации...и нельзя просто взять и не обработать сумму по одному договору...то, что разработчик в с кривыми руками сделал это поле типа varchar (4000) это уже другой вопрос...Для дебилов
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select rownum rn, to_number(value(v),'9999999999999999999D999999999',q'[NLS_NUMERIC_CHARACTERS='. ']')/1000 v
  2  from table(sys.odcivarchar2list('-57','15725362.54',null)) v;

        RN          V
---------- ----------
         1      -.057
         2 15725.3625
         3
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39289641
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dron4253orawish,
Ну вот как то надо придумать...не обрабатывать строки не подходящие нельзя...Вы же понимаете, что это не просто циферки...это суммы договоров, определённой организации...и нельзя просто взять и не обработать сумму по одному договору...то, что разработчик в с кривыми руками сделал это поле типа varchar (4000) это уже другой вопрос...
я понимаю только то,что ваш вопрос из трансформации числа в строке из цифр
перешел в тему поиска/очистки безформатных (или грязных?) данных
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39289756
dron4253
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Глупый Телевизор,

Спасибо! помогло
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39289763
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dron4253,

Я думал следующим вопросом будет куда делась четверка после ".3625".
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39289893
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интуиция подсказывает, что раньше или позже в этом поле попадуться - пробелы, слова: руб, коп и т.д.

т.е. эта таблица или это поле не вполне подходят для формирования отчетности.
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39290402
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123ййищи точку
Советы в корне неверные. В числе могут быть одновременно и точки и запятые.
Надо цифры вправо сдвигать. :)
А вот, что добавить в конец перед этим, если ни точки ни запятой, вот это тема для эвристики. :)
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39290407
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев В числе могут быть одновременно и точки и запятые.
пример можно ?
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39290411
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123йй,

123,456,789.123

Некоторые используют в качестве разделителей тысяч запятую, а в качестве целой-дробной части точку. :)

Хотя с руб и коп не прокатит - копеек больше ста оставлять не комильфо. :)
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39290414
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,

что-то мне кажется, что это строка
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39290421
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123йй,

Так по условиям задачи - sum(varchar2)
И предложение
Dimitry Sibiryakov Найти запятую, переставить её на три позиции левее.

Что говорит о куче неявных приведений типов зависящих от NLS параметров. :)
...
Рейтинг: 0 / 0
Разделить на 1000 поле типа varchar
    #39290432
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевЧто говорит о куче неявных приведений типов зависящих от NLS параметров. :)
согласен
авторТак по условиям задачи - sum(varchar2)
читаем дальше
авторВ поле sum сумма 138928586,99
откуда появилось Сергей АрсеньевВ числе могут быть одновременно и точки и запятые
ИМХО шанс увидеть другой разделить дробной части выше, чем увидеть разделитель тысяч.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разделить на 1000 поле типа varchar
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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