Конференция "Базы" » Нужно выборочно преобразовать данные из CHAR в INTEGER [FB 2.0.4]
 
  • Дмитрий Белькевич (03.11.11 14:32) [0]
    Делаю запрос: update series set series_temp = series_number.
    Тип поля series_temp - integer, series_number - char. При этом в некоторых записях series_number находятся данные, которые не могут быть преобразованы в integer. Естественно появляется сообщение об conversion error.
    Пока что придумалось решение 'в лоб': пробегаться кодом или хранимой процедурой в цикле по всем полям, проверять, возможно ли преобразование и если да - то делать его, если нет - заполнять новое поле значением 0.

    Можно ли такое поведение выполнить запросом к базе данных? Без циклов в коде и в ХП?
  • Медвежонок Пятачок © (03.11.11 15:01) [1]
    несколько вложенных реплейсов к полю строки  (по количеству возможных символов) с заменой на нулл
    плюс where результат не нулл
  • Омлет © (03.11.11 15:19) [2]
    В SQL Server есть ISNUMERIC(), про FB не знаю.
  • Медвежонок Пятачок © (03.11.11 15:26) [3]
    а в парадоксе каст без эксепшена преобразует.

    '123-а' -> 123
  • Омлет © (03.11.11 15:34) [4]
    > а в парадоксе

    Как назвали, так и работает.
  • Anatoly Podgoretsky © (03.11.11 15:50) [5]
    А почему по всем полям, когда интересует только одно поле.
  • Дмитрий Белькевич (03.11.11 18:44) [6]
    > или хранимой процедурой в цикле по всем полям,
    читать: в цикле по всем записям

    Увы - ISNUMERIC нету. Чувствую, всё циклом в коде закончится.
  • Loginov Dmitry © (03.11.11 19:56) [7]

    >
    > Можно ли такое поведение выполнить запросом к базе данных?
    >  Без циклов в коде и в ХП?


    Use EXECUTE BLOCK!
 
Конференция "Базы" » Нужно выборочно преобразовать данные из CHAR в INTEGER [FB 2.0.4]
Есть новые Нет новых   [134431   +11][b:0][p:0]