0

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

Select field
from table
where isnumeric(field) = 1

一些研究让我“相似”。这应该可以工作,但会引发错误:

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

{"动态 SQL 错误" & vbCrLf & "SQL 错误代码 = -104" & vbCrLf & "令牌未知 -" & vbCrLf & "SIMILAR"}

4

1 回答 1

1

Firebird 没有内置函数可以执行isnumericSQL Server 的功能。在 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 及更早版本已终止,不再接收更新(包括安全修复!)。

于 2021-03-17T07:40:42.743 回答