Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Конвертация строки в число с подавлением ошибок конвертации / 5 сообщений из 5, страница 1 из 1
28.12.2015, 11:50
    #39139176
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация строки в число с подавлением ошибок конвертации
Есть две таблицы, которые связываются или по строковому значению, или по числовому.
Запрос на объединение, соответственно, меняется c
Код: sql
1.
LEFT JOIN SPRT ON SPRT ON SPRT.MARK = WBP.IDENT


на
Код: sql
1.
LEFT JOIN SPRT ON SPRT ON SPRT.CODE = WBP.IDENT


CODE - числовое, MARK и IDENT - строковые.
Причем, поле, по которому идет связь, может иметь некорректное значение (например, осталось с прежними данными).
Если связь установлена по числу, а в поле - строка, то запрос падает.
FBArithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
Cannot transliterate character between character sets.
Хочу это поле конвертировать в число так, что в случае если оно не число, то в результате получал не ошибку, а null (и соответственно, просто не было бы данных по связываемой таблицы)

Из существующих функций можно такое сделать, или надо писать UDF?
...
Рейтинг: 0 / 0
28.12.2015, 11:51
    #39139180
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация строки в число с подавлением ошибок конвертации
опечатался в запросах
Код: sql
1.
LEFT JOIN SPRT ON SPRT.MARK = WBP.IDENT


Код: sql
1.
LEFT JOIN SPRT ON SPRT.CODE = WBP.IDENT
...
Рейтинг: 0 / 0
28.12.2015, 12:20
    #39139207
Граур Станислав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация строки в число с подавлением ошибок конвертации
Cobalt747Хочу это поле конвертировать в число так, что в случае если оно не число, то в результате получал не ошибку, а null (и соответственно, просто не было бы данных по связываемой таблицы)

Из существующих функций можно такое сделать, или надо писать UDF?

Почему строковое поле нужно конвертить в число, а не числовое в строку?

LEFT JOIN SPRT ON SPRT ON SPRT.CODE = WBP.IDENT
...
Рейтинг: 0 / 0
28.12.2015, 12:25
    #39139213
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация строки в число с подавлением ошибок конвертации
Граур Станислав,

А ведь точно!
Спасибо.
...
Рейтинг: 0 / 0
28.12.2015, 21:10
    #39139638
H.e.l.p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация строки в число с подавлением ошибок конвертации
А если конвертировать число в строку, будет ли работать индекс по SPRT.CODE? Может лучше так?
Код: sql
1.
2.
...
LEFT JOIN SPRT ON SPRT.CODE = iif(WBP.IDENT similar to '[0-9]{1,}', WBP.IDENT, null)
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Конвертация строки в число с подавлением ошибок конвертации / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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