暂无图片
name字段有唯一索引,但是存在加空格的重复值,请问如何删除带空格的数据?
我来答
分享
tinge
2021-09-02
name字段有唯一索引,但是存在加空格的重复值,请问如何删除带空格的数据?
CREATE TABLE a (id int,name varchar(30));
name字段有唯一索引

INSERT INTO a VALUES(1,'张三 '),(2,'张三'), (3,'李四 '), (4,'李四'), (5,'王五');
A表
-------------------------------------------
id name
1 张三 
2 张三
3 李四 
4 李四
5 王五
-------------------------------------------

1 张三 和 3李四 后面有空格
查询 name 字段名称如果有相同名称 且名称后面有空格的,则删除有空格行
怎么实现呢?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
Lucifer三思而后行
暂无图片

疑问❓:

是否可以理解为删除带 空格 的name字段对应的行?如果是的话,可以参考如下:

✅正确答案: 可以通过 regexp_like 函数找出包含空格的行记录,确认后删除即可!

测试过程如下:

SQL> SQL> create table lucifer (id number,name varchar2(100)); Table created. SQL> insert into lucifer values(1,'张三'); 1 row created. SQL> insert into lucifer values(2,'张三 '); 1 row created. SQL> insert into lucifer values(3,'李四'); 1 row created. SQL> insert into lucifer values(4,'李四 '); 1 row created. SQL> insert into lucifer values(5,'王五'); 1 row created. SQL> insert into lucifer values(6,'王五 '); 1 row created. SQL> commit; Commit complete. SQL> select * from lucifer; SQL> set line222 SQL> / ID NAME ---------- ---------------------------------------------------------------------------------------------------- 1 张三 2 张三 3 李四 4 李四 5 王五 6 王五 6 rows selected. SQL> select id,name from lucifer where regexp_like(name,'( )+'); ID NAME ---------- ---------------------------------------------------------------------------------------------------- 2 张三 4 李四 6 王五 SQL>

删除sql

delete from lucifer where id in (select id,name from lucifer where regexp_like(name,'( )+'));
暂无图片 评论
暂无图片 有用 0
暂无图片
薛晓刚

只能说给你个方向。
用substr或者rtrim这个的函数找到最右边一个字符去和空格做比较,如果是的就找到了。不过你可能全表要比较,效率有点低。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏