sql - 可移植地确定字符串是否可转换为整数

标签 sql casting portability

我想投一个 VARCHAR到 SQL INTEGER ,如果字段中的某些值无法正确转换,则提供默认值。就像是:

sql> SELECT str FROM tbl;  -- CREATE TABLE tbl (str VARCHAR(12), ...)
    str
========
  12345
     -1
    foo

sql> SELECT CAST((CASE WHEN ... THEN str ELSE '-9999' END) AS INTEGER) AS "int" FROM tbl;
    int
========
  12345
     -1
  -9999

我可以在上面的省略号中输入什么来产生所需的结果?

对于许多特定的数据库,已经在 SO 上提出并回答了这个问题,但我想知道是否有一种或多或少的可移植方式来实现这一目标?

最佳答案

鉴于 INTEGER(32 位?64 位?)可接受的值范围因实现而异,没有非供应商特定的方法来做到这一点。

关于sql - 可移植地确定字符串是否可转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2065788/

相关文章:

sql - Teradata:如何在存储过程中引发错误

mysql - JOIN 中的 CONCAT_WS 行

c++ - 如何以可移植的方式将整数转换为小端

delphi - TInterfacedObject 自动内存管理也可以与 C++Builder 一起使用吗?

C++ 强制转换为 void

java - 相同的代码在 C 和 Java 中给出了不同的答案,你能帮我吗?

MySQL:如何基于 SELECT 查询更新查询

sql - 正则表达式 : Postgres SQL query is returning all records available in the table

c++ - std::stoi bool 值的替代方案

c# - 如何在 C# 中将接口(interface)转换为其类型?