powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Ошибка при выполнении преобразования строки в целое число с помощью INT
4 сообщений из 4, страница 1 из 1
Ошибка при выполнении преобразования строки в целое число с помощью INT
    #39451824
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Выполнил следующую команду проверки содержимого в столбце OKATO для возможности конвертации в тип integer
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT SUBSTR(RTRIM(LTRIM(bf.OKATO)), 1, 5) AS OKATO, 
            CASE WHEN LENGTH(RTRIM(LTRIM(TRANSLATE (SUBSTR(RTRIM(LTRIM(bf.OKATO)), 1, 5),'','0123456789'))))>0 THEN 
            0 ELSE 1 END AS CAN_CONVERT_TO_INT 
FROM CSM_CUSTOMER_BUFFER bf
WHERE LENGTH(RTRIM(LTRIM(bf.OKATO)))>4
order by 1 desc
FETCH FIRST 10 ROWS ONLY


2. Результат выполнения команды см Screenshot_3
3. Выполняю следующий скрипт
Код: plsql
1.
2.
3.
4.
5.
SELECT SUBSTR(RTRIM(LTRIM(bf.OKATO)), 1, 5) AS OKATO,INTEGER(SUBSTR(RTRIM(LTRIM(bf.OKATO)), 1, 5))
FROM CSM_CUSTOMER_BUFFER bf
WHERE LENGTH(RTRIM(LTRIM(bf.OKATO)))>4
order by 1 desc
FETCH FIRST 10 ROWS ONLY; 


4. В результате выполнения команды возникла следующая ошибка, вот лог выполнения команды:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
------------------------------ Введенные команды ------------------------------
SELECT SUBSTR(RTRIM(LTRIM(bf.OKATO)), 1, 5) AS OKATO,INTEGER(SUBSTR(RTRIM(LTRIM(bf.OKATO)), 1, 5))
FROM CSM_CUSTOMER_BUFFER bf
WHERE LENGTH(RTRIM(LTRIM(bf.OKATO)))>4
order by 1 desc
FETCH FIRST 10 ROWS ONLY;
------------------------------------------------------------------------------
SELECT SUBSTR(RTRIM(LTRIM(bf.OKATO)), 1, 5) AS OKATO,INTEGER(SUBSTR(RTRIM(LTRIM(bf.OKATO)), 1, 5)) FROM CSM_CUSTOMER_BUFFER bf WHERE LENGTH(RTRIM(LTRIM(bf.OKATO)))>4 order by 1 desc FETCH FIRST 10 ROWS ONLY

OKATO 2          
----- -----------
SQL0420N  Неверный символ в символьной строке - аргументе функции "INTEGER".  
SQLSTATE=22018

SQL0420N  Неверный символ в символьной строке - аргументе функции "INTEGER                                                               ".

Объяснение: 

Функция "<имя-функции>" использует в качестве аргумента 
символьную строку, которая содержит недопустимый в числовых 
константах языка SQL символ.  Эта функция могла быть вызвана в 
результате использования спецификации CAST с "<имя-функции>" в 
качестве целевого типа данных.  Функция или тип данных, 
используемые в операторе SQL, могут быть синонимом для имени 
"<имя-функции>".  

 Если в функции DECIMAL задан разделитель целой и дробной частей, 
именно он должен быть использован вместо разделителя целой и 
дробной частей по умолчанию.  

Действия пользователя: 

Убедитесь, что данная символьная строка, которая преобразуется в 
числовой тип данных, содержит только допустимые в константах 
языка SQL символы, в том числе разделитель целой и дробной частей,
 если он задан.  

 sqlcode :  -420 

 sqlstate :  22018 
...
Рейтинг: 0 / 0
Ошибка при выполнении преобразования строки в целое число с помощью INT
    #39451838
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986,

Мне нужно проверить можно ли значения в столбце преобразовать в целый тип данных, а дальше выполнить это преобразование в целый тип с помощью функции INT
...
Рейтинг: 0 / 0
Ошибка при выполнении преобразования строки в целое число с помощью INT
    #39451858
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986,

Вот так работает:
Код: plsql
1.
2.
3.
select INT(SUBSTR(RTRIM(LTRIM(bf.OKATO)), 1, 5))
from CSM_CUSTOMER_BUFFER bf 
where SUBSTR(RTRIM(LTRIM(bf.OKATO)), 1, 5)!='' AND TRANSLATE(SUBSTR(RTRIM(LTRIM(bf.OKATO)), 1, 5),' ','1234567890') = ''
...
Рейтинг: 0 / 0
Ошибка при выполнении преобразования строки в целое число с помощью INT
    #39451891
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986,

Код: plsql
1.
2.
SELECT CASE WHEN LENGTH(RTRIM(LTRIM(OKATO)))<5 THEN NULL ELSE CASE WHEN TRANSLATE(SUBSTR(RTRIM(LTRIM(OKATO)), 1, 5),' ','1234567890') != '' THEN NULL ELSE INT(SUBSTR(LTRIM(OKATO), 1, 5)) END END
FROM CSM_CUSTOMER_BUFFER
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Ошибка при выполнении преобразования строки в целое число с помощью INT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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