作为 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'

&lt;some integer&gt; 的长度可以是 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 插入查询中的值处理?

如何在不指定每一列的情况下将整行作为参数传递给 Spark(Java)中的 UDF?

PostgreSQL递归查询

linux 如何查询PostgreSQL的版本

SQL如何将整数值四舍五入到小数点后2位

postgresql----COPY之表与文件之间的拷贝