SQL Casing正则表达式查询

And*_*y A 1 regex mysql

我的代码中出现了一个错误,它允许重复的条目出现在数据库表中,但具有不同的大小写.我正在使用MySQL.

例如,在这个例子中,第二行不应该被添加,但它是.

    ID    Name          Description
-------------------------------------
    1    HELLO WORLD    Saying hello
    2    Hello world    Saying hello
Run Code Online (Sandbox Code Playgroud)

为了补救不正确的数据,我想删除重复发生时全名大写的行.我可以在SQL中使用正则表达式,这是最好的解决方案,我该怎么做?

该表全文如下

'ADDRESSBOOK_GROUP','CREATE TABLE ADDRESSBOOK_GROUP( ID int(10)unsigned NOT NULL NAMEdefault''0 '', varchar(255)collat​​e utf8_unicode_ci NOT NULL, DESCRIPTIONtext collat​​e utf8_unicode_ci, ADDRESSBOOK_IDint(10)default NULL, TYPE int(10)unsigned NOT NULL default ''1',PRIMARY KEY(ID),KEY ADDRESSBOOK_ID(ADDRESSBOOK_ID))ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = DYNAMIC'

编辑 -我也忘了早些时候提到我只想在ADDRESSBOOK_ID为'6'时发生重复检查;

Jul*_*May 5

以下选择存在双精度数的所有大写值

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;
Run Code Online (Sandbox Code Playgroud)

编辑:

delete t.* from ADDRESSBOOK_GROUP t
inner join (
    select distinct t.ID
    from ADDRESSBOOK_GROUP t
    left join (
        select
            count(*) as n,
            NAME,
            ADDRESSBOOK_ID
        from ADDRESSBOOK_GROUP
        group by 
            NAME,
            ADDRESSBOOK_ID
    ) as t2
        on t2.name = t.name
        and t2.ADDRESSBOOK_ID = t.ADDRESSBOOK_ID
    left join ADDRESSBOOK_GROUP t_n
        on t_n.ID = t.ID
        and t_n.NAME REGEXP ('^[0-9]+$') 
    where 
        t.NAME like binary upper(t.NAME)
        and t_n.ID is null
        and t2.n > 1
) as a
    on a.ID = t.ID
where t.ADDRESSBOOK_ID = 6;
Run Code Online (Sandbox Code Playgroud)