如何将整数转换为字符串作为PostgreSQL查询的一部分?

spy*_*3rr 102 postgresql postgresql-9.1

如何将整数转换为字符串作为PostgreSQL查询的一部分?

所以,例如,我需要:

SELECT * FROM table WHERE <some integer> = 'string of numbers'
Run Code Online (Sandbox Code Playgroud)

哪里<some integer>可以是1到15位数的长度.

Bru*_*olo 109

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

intval::text
Run Code Online (Sandbox Code Playgroud)

在你的情况下

SELECT * FROM table WHERE <some integer>::text = 'string of numbers'
Run Code Online (Sandbox Code Playgroud)

  • 如果您在 jpa 本机查询中使用 SpEL,则这将不起作用。在这种情况下你必须使用强制转换。 (2认同)

Boh*_*ian 102

因为数字最多可以是15位,所以您需要转换为64位(8字节)整数.试试这个:

SELECT * FROM table
WHERE myint = mytext::int8
Run Code Online (Sandbox Code Playgroud)

该::转换运算符是历史的,但方便.Postgres也符合SQL标准语法

myint = cast ( mytext as int8)
Run Code Online (Sandbox Code Playgroud)

  • 啊.我实际上需要它反过来(myint转换为varchar),但你的回答足以引导我到正确的地方.我只是做了'myint :: varchar(255)= mytext`并且它有效.谢谢! (37认同)
  • @Bohemian问题标题和文字说:"如何将整数转换为字符串作为PostgreSQL查询的一部分?".然后是***当*可能*相关时.在我的情况下,我找到了这个线程,因为我实际上必须将一个整数转换为一个字符串 - 不是为了比较而是为了在一个聚合函数内部使用,如果参数不是一个字符串就会失败.在这种情况下,这不是问题的答案,因为它字面上读取atm. (7认同)
  • 严格来说,这并不能回答问题。这个例子不是问题 - 将整数转换为字符/字符串是。不过谢谢@spyd3rr (4认同)

Oma*_*osa 10

如果某个可以存储为字符串的整数包含小数点,并且您想要比较小数点与小数点,下面会有所帮助

select NULLIF('105.0', '')::decimal

SELECT * FROM table WHERE NULLIF('105.0', '')::decimal = 105.0
Run Code Online (Sandbox Code Playgroud)

下面不会转换

select NULLIF('105.0', '')::int

select NULLIF('105.0', '')::integer
Run Code Online (Sandbox Code Playgroud)

对于这个问题你只需通过

select 105.3::text 
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以这样做:

SELECT * FROM table WHERE cast(YOUR_INTEGER_VALUE as varchar) = 'string of numbers'
Run Code Online (Sandbox Code Playgroud)