Mysql SQL外壳正则表达式查询
我的代码中出现了一个bug,它允许重复条目出现在数据库表中,但大小写不同。我正在使用MySQL 例如在本例中,不应添加第二行,但已添加Mysql SQL外壳正则表达式查询,mysql,regex,Mysql,Regex,我的代码中出现了一个bug,它允许重复条目出现在数据库表中,但大小写不同。我正在使用MySQL 例如在本例中,不应添加第二行,但已添加 ID Name Description ------------------------------------- 1 HELLO WORLD Saying hello 2 Hello world Saying hello 为了纠正不正确的数据,我想删除全名大写的行,只要出现重复。我可以在
ID Name Description
-------------------------------------
1 HELLO WORLD Saying hello
2 Hello world Saying hello
为了纠正不正确的数据,我想删除全名大写的行,只要出现重复。我可以在SQL中使用正则表达式吗?这是最好的解决方案吗?我该怎么做
该表全文如下:
“地址簿组”,“创建表地址簿组
(ID
int(10)无符号非空默认值“0”,NAME
varchar(255)collate
utf8\u unicode\u ci不为空,说明
文本整理
utf8\u unicode\u ci,ADDRESSBOOK\u ID
int(10)默认为空,TYPE
int(10)无符号非空默认值“1”,主键(ID
),键
ADDRESSBOOK\u ID
(ADDRESSBOOK\u ID
)引擎=MyISAM默认值
字符集=utf8 COLLATE=utf8\U unicode\U ci行\U格式=动态'
编辑-我忘了在前面提到,我只希望在ADDRESSBOOK_ID为“6”时进行重复检查 下面选择存在双精度的所有大写值
delete t.* from table_name t
inner join (
select distinct t.id
from table_name t
left join table_name t2
on t2.col_name = t.col_name
where t.col_name LIKE BINARY UPPER(t.col_name)
) as a
on a.id = t.id;
编辑:
下面选择存在双精度的所有大写值
delete t.* from table_name t
inner join (
select distinct t.id
from table_name t
left join table_name t2
on t2.col_name = t.col_name
where t.col_name LIKE BINARY UPPER(t.col_name)
) as a
on a.id = t.id;
编辑:
哪种关系数据库管理系统?并显示表。我提供了一个简化的表示例。到目前为止,我已经研究了如何计算SQL,但我不确定WHERE语句。我没有regex的经验,一直在努力在其中站稳脚跟。一旦我知道我在做什么,我就认为这是一个相当简单的正则表达式(除非我根本不需要正则表达式?)。哪个RDBMS?并显示表。我提供了一个简化的表示例。到目前为止,我已经研究了如何计算SQL,但我不确定WHERE语句。我没有regex的经验,一直在努力在其中站稳脚跟。一旦我知道我在做什么,我就认为这是一个相当简单的正则表达式(除非我根本不需要正则表达式)。谢谢Julien,但我还需要检查行是否已经存在不同的大小写。另外,
LIKE
不区分大小写@JulienMay,这真的对你有用吗?据我所知,MySQL不允许对正在删除的同一个表进行子选择。比如看这个问题:@dan1111:是的,这对我来说很有用。使其工作的相关部分是使用联接作为shown@JulienMay +1. 我只是想知道,因为我试着做类似的事情。但是我没有使用联接,所以这一定是我的问题。谢谢Julien,但我还需要检查行是否已经存在,并且大小写不同。另外,LIKE
不区分大小写@JulienMay,这真的对你有用吗?据我所知,MySQL不允许对正在删除的同一个表进行子选择。比如看这个问题:@dan1111:是的,这对我来说很有用。使其工作的相关部分是使用联接作为shown@JulienMay +1. 我只是想知道,因为我试着做类似的事情。但是我没有使用连接,所以这一定是我的问题。