作为 PostgreSQL 查询的一部分,如何将整数转换为字符串?
Posted
技术标签:
【中文标题】作为 PostgreSQL 查询的一部分,如何将整数转换为字符串?【英文标题】:How do I convert an integer to string as part of a PostgreSQL query? 【发布时间】:2012-11-28 08:58:18 【问题描述】:如何将整数转换为字符串作为 PostgreSQL 查询的一部分?
所以,例如,我需要:
SELECT * FROM table WHERE <some integer> = 'string of numbers'
<some integer>
的长度可以是 1 到 15 位。
【问题讨论】:
如果你的字符串有前导零,你会怎么做? 【参考方案1】:由于该数字最多可包含 15 位数字,因此您需要转换为 64 位(8 字节)整数。试试这个:
SELECT * FROM table
WHERE myint = mytext::int8
::
转换运算符具有历史意义,但很方便。 Postgres 也符合 SQL 标准语法
myint = cast ( mytext as int8)
如果您有想要与int
比较的文字文本,请将int
转换为文本:
SELECT * FROM table
WHERE myint::varchar(255) = mytext
【讨论】:
啊。我实际上需要相反的方式(myint 转换为 varchar),但你的回答足以引导我到正确的地方。我刚刚做了myint::varchar(255) = mytext
,它有效。谢谢!
严格来说,这并不能回答问题。该示例不是问题 - 将整数转换为字符/字符串。但是谢谢,@spyd3rr
@fred 不是这样:OP 的 actual 问题是尝试比较数字和文本值失败。这个答案显示了如何通过将文本转换为数字来解决这个问题(即使 OP 尝试将数字转换为文本)。
@Bohemian 问题标题和文本说:“如何将整数转换为字符串作为 PostgreSQL 查询的一部分?”。然后是一个示例,说明何时此可能 是相关的。就我而言,我找到了这个线程,因为我实际上必须将整数转换为字符串 - 不是为了比较,而是为了在聚合函数内部使用,如果参数不是字符串,则会失败。在这种情况下,这不是问题的答案,因为它的字面意思是 atm。【参考方案2】:
你可以通过这种方式将整数转换为字符串
intval::text
你的情况也是这样
SELECT * FROM table WHERE <some integer>::text = 'string of numbers'
【讨论】:
如果您在 jpa 本机查询中使用 SpEL,这将不起作用。在这种情况下,您必须使用 cast。【参考方案3】:你可以这样做:
SELECT * FROM table WHERE cast(YOUR_INTEGER_VALUE as varchar) = 'string of numbers'
【讨论】:
【参考方案4】:如果某个可以存储为字符串的整数包含小数点,并且您希望将小数与小数进行比较,下面会有所帮助
select NULLIF('105.0', '')::decimal
SELECT * FROM table WHERE NULLIF('105.0', '')::decimal = 105.0
以下不会转换
select NULLIF('105.0', '')::int
select NULLIF('105.0', '')::integer
对于这个问题,你会去的
select 105.3::text
【讨论】:
以上是关于作为 PostgreSQL 查询的一部分,如何将整数转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 HTML 作为 PostgreSQL 插入查询中的值处理?