检查 Firebird 数据库中的数字

Check for is numeric in Firebird database

如何检查 Firebird 数据库中字段的值是否为数字?这似乎是一个简单的问题,但我在 FreeUDFLib 或标准 Firebird 库中找不到任何东西。这是我在 SQL 服务器中的做法。

Select field
from table
where isnumeric(field) = 1

一些研究让我“类似于”。这应该有效,但会引发错误:

select field
from table
where field SIMILAR TO '[0-9]+'

{"Dynamic SQL Error" & vbCrLf & "SQL error code = -104" & vbCrLf & "Token unknown - " & vbCrLf & "SIMILAR"}

Firebird 没有内置功能来完成 SQL 服务器中 isnumeric 的功能。在 Firebird 3 中你可以在 PSQL 中自己构建一个,例如:

create function isnumeric(val varchar(30))
  returns boolean
  deterministic
as
  declare dblval double precision;
begin
  dblval = cast(val as double precision);
  return true;
  when any do 
    return false;
end

关于 similar to 的问题,它是在 Firebird 2.5 中引入的,因此这表明您使用的是 Firebird 2.1 或更早版本。那样的话,就真的到了更新的时候了。 Firebird 2.5 及更早版本已停产,不再接收更新(包括安全修复!)。