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

В таблице Empl есть поле sum(varchar2(4000 Byte)). В поле sum сумма 138928586,99. Подскажите как в тысячах рублей вывести значения из этого поля?
...
Рейтинг: 0 / 0
08.08.2016, 17:53:12
    #39288504
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить на 1000 поле типа varchar
Код: 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
08.08.2016, 17:56:58
    #39288507
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить на 1000 поле типа varchar
dron4253Подскажите как в тысячах рублей вывести значения из этого поля?

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

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

Выдаётся ошибка в Функции SQL использована неверная строка параметров NLS
...
Рейтинг: 0 / 0
09.08.2016, 10:43:02
    #39288753
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить на 1000 поле типа varchar
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
10.08.2016, 11:20:30
    #39289501
dron4253
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить на 1000 поле типа varchar
andrey_anonymous,

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

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

Маленькая поправочка: в поле summ есть следующие значения - 57; 15725362.54; null
ну и как вы предполагаете арифметику над этой хренью?
проверяйте состав вашей строки и не обрабатывайте те, где нет, например ~(достаточного вам) количества цифр
...
Рейтинг: 0 / 0
10.08.2016, 12:35:26
    #39289581
dron4253
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить на 1000 поле типа varchar
orawish,
Ну вот как то надо придумать...не обрабатывать строки не подходящие нельзя...Вы же понимаете, что это не просто циферки...это суммы договоров, определённой организации...и нельзя просто взять и не обработать сумму по одному договору...то, что разработчик в с кривыми руками сделал это поле типа varchar (4000) это уже другой вопрос...
...
Рейтинг: 0 / 0
10.08.2016, 12:39:44
    #39289591
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить на 1000 поле типа varchar
dron4253Ну вот как то надо придумать...
Ты таки попробуй найти запятую и переставить на три позиции левее.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.08.2016, 12:42:26
    #39289597
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить на 1000 поле типа varchar
dron4253Вы же понимаете, что это не просто циферки...это суммы договоров
авторесть следующие значения - 57; 15725362.54; null
...
Рейтинг: 0 / 0
10.08.2016, 13:05:20
    #39289627
Глупый Телевизор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить на 1000 поле типа varchar
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
10.08.2016, 13:14:51
    #39289641
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить на 1000 поле типа varchar
dron4253orawish,
Ну вот как то надо придумать...не обрабатывать строки не подходящие нельзя...Вы же понимаете, что это не просто циферки...это суммы договоров, определённой организации...и нельзя просто взять и не обработать сумму по одному договору...то, что разработчик в с кривыми руками сделал это поле типа varchar (4000) это уже другой вопрос...
я понимаю только то,что ваш вопрос из трансформации числа в строке из цифр
перешел в тему поиска/очистки безформатных (или грязных?) данных
...
Рейтинг: 0 / 0
10.08.2016, 14:54:01
    #39289756
dron4253
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить на 1000 поле типа varchar
Глупый Телевизор,

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

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

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

123,456,789.123

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

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

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

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

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


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