如何根据字符串ID在PostgreSQL数据库中删除多行记录?

4

我有以下表格:

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.

3
永远不要将数字存储在 varchar 类型的列中。你所遇到的问题直接源于这个糟糕的设计决策。 - user330315
1个回答

10

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接