如何转换作为字符串存储在数据库中的值 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/