如何在PostgreSQL查询中将整数转换为字符串?


118

如何在PostgreSQL查询中将整数转换为字符串?

因此,例如,我需要:

SELECT * FROM table WHERE <some integer> = 'string of numbers'

其中,<some integer>从1到15位数字可以在任何地方。


如果字符串的前导零为零,该怎么办?
thisfeller 2012年

Answers:


123

由于该数字最多可以包含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

43
啊。实际上,我实际上需要它(将myint转换为varchar),但是您的回答足以引导我到达正确的位置。我只是做到了myint::varchar(255) = mytext而行。谢谢!
spyd3rr 2012年

3
严格来说,这不能回答问题。该示例不是问题-将整数转换为char / string是。但是,谢谢,@ spyd3rr
FrederikStruck-Schøning18年

@fred并非如此:OP的实际问题是尝试比较数字和文本值失败。此答案显示了如何通过将文本转换为数字来解决此问题(即使OP尝试将数字转换为文本)。
波希米亚

7
@Bohemian问题标题和文本说:“如何在PostgreSQL查询中将整数转换为字符串?”。然后,一个例子中,当这可能是相关的。就我而言,我找到了该线程,因为我实际上必须将整数转换为字符串-并非用于比较,而是用于在参数不是字符串的情况下失败的聚合函数内部。在这种情况下,这不是问题的答案,因为它的字面意思是atm。
FrederikStruck-Schøning18年

125

您可以通过这种方式将整数转换为字符串

intval::text

所以你的情况

SELECT * FROM table WHERE <some integer>::text = 'string of numbers'

1
如果您在jpa本机查询中使用SpEL,则此方法将无效。在这种情况下,您必须使用强制转换。
Raj Shah

12

您可以这样做:

SELECT * FROM table WHERE cast(YOUR_INTEGER_VALUE as varchar) = 'string of numbers'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.