检查 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 及更早版本已停产,不再接收更新(包括安全修复!)。
如何检查 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 及更早版本已停产,不再接收更新(包括安全修复!)。