sql - 如何根据字符串 id 删除 PostgreSQL 数据库中的多行?

标签 sql postgresql types

所以我有下表:

qliu=# select id from api_member;
 id  
-----
 242
 236
 246
 251
 253
 9
 21
 185
 49
 188

我希望能够使用如下命令删除具有一系列 id 的行:

delete from api_member where id between '0' and '10';

但它什么也没有删除。另外如果你想知道

delete from api_member where id between 0 and 10;

我收到以下错误:

ERROR:  operator does not exist: character varying >= integer
LINE 1: delete from api_member where id between 0 and 10;
                                        ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

最佳答案

这是因为您的列的 idvarchar 类型,而不是整数。您可以通过将其转换为 integer 来解决此问题,如下所示:

delete from api_member
where CAST(id as integer) between 0 and 10;

如果行数很大,这个操作可能会太慢。考虑将 id 列的类型更改为数字类型。

关于sql - 如何根据字符串 id 删除 PostgreSQL 数据库中的多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25001151/

相关文章:

sql - 传递到字典中的模型项的类型为“System.Data.Entity.DynamicProxies.Object”

json - 在 Postgres 中从 JSON 获取嵌套对象值

ruby-on-rails - VPC无法访问数据库实例

sql - hsqldb中的 "select current_timestamp"怎么办?

sql - 比较 SQL 中日期时间的日期部分

php - 使用 php exec 从导出的 sql 创建 mysql 数据库

objective-c - 如何获取类簇中 "top"类的名称?

node.js - 如何使用 sequelize 6 和 postgres 获得多少个打开的连接?

dictionary - F# 类型匹配 - 无法创建映射或匹配记录

SQL Server 2005 数据类型