string - 如何转换52 :34 string value to bigint

标签 string postgresql casting bigint

如何转换作为字符串存储在数据库中的值 52:35,而我只想将 PostgreSQL 数据库中 BigInt 值中的 52 作为查询。

我尝试了以下查询

select cast(substr(a,1,strpos(a,':')-1) AS bigint) as value from abc

返回错误“不允许负子串长度”

最佳答案

当遇到不包含冒号 : 的值时,该查询将失败。使用 case...when...else...end 构造仅在值包含冒号时才尝试提取。类似(未经测试)

CASE WHEN strpos(a,':') > 0 
    THEN cast(substr(a,1,strpos(a,':')-1) AS bigint
    else null
END

对于 else 的情况,替换任何你需要的。可能还有一种方法可以使用 split_part(...) 而不是上面的方法,但是我找不到说明如果分隔符不存在会发生什么情况的文档。

关于string - 如何转换52 :34 string value to bigint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48617007/

相关文章:

string - 测试字符串是否为有效整数

sql - Postgresql:在更新时替换部分字符串

sql - 替换特定字段中的不正确日期

python - Django 查询格式化日期时间输出

c++ - 从 unsigned long long 转换为 double ,反之亦然会改变值

php - 如何在 MySQL 或 PHP 中将 32 位整数从无符号转换为有符号?

java - 有没有一种方法可以将字符串与用户永远无法跨语言和键盘类型输入的定界符连接起来?

java - StringBuilder - 使用串联与在循环中使用追加

javascript - 如何在javascript中一次用其他多个字符串替换多个字符串?

C++ 指针和 vector