String 如何将52:34字符串值转换为bigint
如何强制转换一个值String 如何将52:34字符串值转换为bigint,string,postgresql,casting,bigint,String,Postgresql,Casting,Bigint,如何强制转换一个值52:35,该值作为字符串存储在数据库中,我只想在PostgreSQL数据库中的BigInt value中使用52作为查询 我尝试了以下查询 select cast(substr(a,1,strpos(a,':')-1) AS bigint) as value from abc 它返回了一个错误“不允许负子字符串长度”当查询遇到不包含冒号的值时,查询将失败:。使用case…when…else…end构造仅当值包含冒号时才尝试提取。类似于(未经测试) 对于else案例,请替换您
52:35
,该值作为字符串存储在数据库中,我只想在PostgreSQL数据库中的BigInt value中使用52
作为查询
我尝试了以下查询
select cast(substr(a,1,strpos(a,':')-1) AS bigint) as value from abc
它返回了一个错误“不允许负子字符串长度”当查询遇到不包含冒号的值时,查询将失败
:
。使用case…when…else…end
构造仅当值包含冒号时才尝试提取。类似于(未经测试)
对于
else
案例,请替换您需要的任何内容。也可能有一种方法可以使用分割部分(…)
而不是上面提到的,但是我很难找到说明如果分隔符不存在会发生什么的文档。当查询遇到不包含冒号的值时,查询将失败。:
。使用case…when…else…end
构造仅当值包含冒号时才尝试提取。类似于(未经测试)
对于else
案例,请替换您需要的任何内容。也可能有一种方法可以使用split\u part(…)
来代替上面的方法,但是我很难找到说明如果分隔符不存在会发生什么情况的文档。您可以使用
你可以用
为什么使用
java
标记?用java进行解析有效吗?这还不清楚。为什么使用java
标记?用java进行解析有效吗?这是不清楚的。对于split\u part
来说,如果没有分隔符,并且您使用第一个字段,那么它将返回整个字符串。谢谢Jim Garrison,,,,上面的查询部分工作了。:)对于split\u part
而言,如果没有分隔符,并且您使用第一个字段,那么它将返回整个字符串。谢谢Jim Garrison,,,,上面的查询部分工作正常。:)
CASE WHEN strpos(a,':') > 0
THEN cast(substr(a,1,strpos(a,':')-1) AS bigint
else null
END
postgres=# select split_part('52:35', ':', 1)::bigint;
split_part
------------
52
postgres=# select split_part('52', ':', 1)::bigint;
split_part
------------
52