如何基于字符串id删除PostgreSQL数据库中的多行?

如何基于字符串id删除PostgreSQL数据库中的多行?,sql,postgresql,types,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;

因此,我有下表:

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;
我得到以下错误:


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

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

如果行数较大,则此操作可能太慢。考虑将<代码> ID>代码>列的类型更改为数字类型。

永远不要在<代码> VARCHAR < /代码>列中存储数字。您遇到的问题直接源于错误的设计决策。
delete from api_member
where CAST(id as integer) between 0 and 10;