Postgres中的LENGTH()函数不能处理整数数据类型。我需要一个用户ID小于或等于4的所有用户的列表。我得到了以下错误。
juzqafwq1#
对于Integer数据类型,可以使用LENGTH()函数,但必须键入cast Integer to String。我相信下面的查询应该可以工作:
LENGTH()
SELECT * FROM users WHERE LENGTH(user_id :: TEXT) <= 4;
sq1bmfud2#
在Postgres中,LENGTH()函数用于获取字符串的长度,它在第一种情况下有效,因为user_fullname是一个字符串。在第二种情况下,您尝试使用整数类型。使用LENGTH(user_id::text)对其进行类型转换,以获取长度为4位的所有ID。
user_fullname
LENGTH(user_id::text)
plupiseo3#
Select * from users where length(user_id::text) = 4;
b1zrtrql4#
根据PostgreSQL Docs,Length函数用于查找字符串的长度。但是,您试图对numeric值使用该函数,因此出现错误。尝试将用户ID强制转换为字符串。尝试
SELECT * FROM users WHERE LENGTH(user_id::text) = 4
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中数据类型的更多信息
mf98qq946#
为了完整起见,字符数不超过4个的正整数实际上是0到9999之间的数字,所以我们可以跳过字符串操作,直接检查:
select * from users where user_id < 10000
如果我们必须处理负数,我们需要询问Business是否-符号增加了字符数,但是逻辑可以很容易地扩展,然而,具有负的自动递增ID是非常罕见的。
-
6条答案
按热度按时间juzqafwq1#
对于Integer数据类型,可以使用
LENGTH()
函数,但必须键入cast Integer to String。我相信下面的查询应该可以工作:
sq1bmfud2#
在Postgres中,
LENGTH()
函数用于获取字符串的长度,它在第一种情况下有效,因为user_fullname
是一个字符串。在第二种情况下,您尝试使用整数类型。
使用
LENGTH(user_id::text)
对其进行类型转换,以获取长度为4位的所有ID。plupiseo3#
b1zrtrql4#
根据PostgreSQL Docs,Length函数用于查找字符串的长度。但是,您试图对numeric值使用该函数,因此出现错误。
尝试将用户ID强制转换为字符串。尝试
anhgbhbe5#
Postgres中的Length函数用于获取字符串的长度,它不适用于Integer数据类型,因为整数不是字符串。
您可以使用以下查询来执行:
有关postgres here中数据类型的更多信息
mf98qq946#
为了完整起见,字符数不超过4个的正整数实际上是0到9999之间的数字,所以我们可以跳过字符串操作,直接检查:
如果我们必须处理负数,我们需要询问Business是否
-
符号增加了字符数,但是逻辑可以很容易地扩展,然而,具有负的自动递增ID是非常罕见的。