Проверьте, является ли поле целочисленным в select

Я пытаюсь определить, является ли содержимое поля целочисленным значением.

В Firebird 2.5 есть "аналог", но в 2.1 он еще не был доступен.

2 ответа

Эта процедура, использующая обработку ошибок, возвращает значение поля как есть, если содержимое является целым числом, в противном случае возвращает 0

SET TERM ^ ;

create or alter procedure INT_CHECK (
    IN_STR varchar(100))
returns (
    ORESULT integer)
as
BEGIN
  /* because WHEN works for the entire block use a separate BEGIN..END*/
  begin  -- START OF BLOCK
  oresult = cast(:in_str as integer);
  when any do
      begin
        oresult = 0;
      end
  end    -- END OF BLOCK
  suspend;
END^

SET TERM ; ^

Спасибо за ваш ответ.

А пока я пойду с:

substring(fieldname from 1 for 1) > '0' and 
substring(fieldname from 1 for 1) < '9' 
Другие вопросы по тегам