postgresql Postgres中的LENGTH()函数不适用于整型数据类型

q9yhzks0  于 2023-03-01  发布在  PostgreSQL
关注(0)|答案(6)|浏览(427)

Postgres中的LENGTH()函数不能处理整数数据类型。我需要一个用户ID小于或等于4的所有用户的列表。我得到了以下错误。

juzqafwq

juzqafwq1#

对于Integer数据类型,可以使用LENGTH()函数,但必须键入cast Integer to String。
我相信下面的查询应该可以工作:

SELECT * FROM users WHERE LENGTH(user_id :: TEXT) <= 4;
sq1bmfud

sq1bmfud2#

在Postgres中,LENGTH()函数用于获取字符串的长度,它在第一种情况下有效,因为user_fullname是一个字符串。
在第二种情况下,您尝试使用整数类型。
使用LENGTH(user_id::text)对其进行类型转换,以获取长度为4位的所有ID。

plupiseo

plupiseo3#

Select * from users where length(user_id::text) = 4;
b1zrtrql

b1zrtrql4#

根据PostgreSQL DocsLength函数用于查找字符串的长度。但是,您试图对numeric值使用该函数,因此出现错误。
尝试将用户ID强制转换为字符串。尝试

SELECT * FROM users WHERE LENGTH(user_id::text) = 4
anhgbhbe

anhgbhbe5#

Postgres中的Length函数用于获取字符串的长度,它不适用于Integer数据类型,因为整数不是字符串。
您可以使用以下查询来执行:

Select * from users where length(user_id::text)= enter_your_id_here e.g 10

Select * from users where length(user_id::text)= 10

有关postgres here中数据类型的更多信息

mf98qq94

mf98qq946#

为了完整起见,字符数不超过4个的正整数实际上是0到9999之间的数字,所以我们可以跳过字符串操作,直接检查:

select *
from users
where user_id < 10000

如果我们必须处理负数,我们需要询问Business是否-符号增加了字符数,但是逻辑可以很容易地扩展,然而,具有负的自动递增ID是非常罕见的。

相关问题