mysql更新使用replace等

cxfofazt  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(283)

我在一张表中有一个记录,比如:

aaaa bbbbb_ ccccc_1

gggg jjjjj_fffff _34

注意空格和下划线以及下划线和空格。
请注意,字符串和数字格式可能不同。
我想使用单行查询选择和更新数据库中的这些信息。
到目前为止我所做的:

$update = " UPDATE table 
               SET SKU = REPLACE((
                        SELECT  SKU 
                        FROM    table 
                        WHERE   SKU LIKE '%\_ %' OR SKU LIKE '% \_%'
                      ),replace('_ ', ' _'),replace('_', '_'))";

已翻译:update table sku=replace from select case 1(u1;)or case 2(1;)with simple_
问题:此查询失败。。。为什么?
编辑1:
这里有一个链接,您可以在其中看到所有包含“\”或“\”的记录。我用这个:

SELECT SKU FROM table WHERE SKU LIKE '%\_ %' OR SKU LIKE '% \_%'

根据tim的建议,上面的查询没有列出700多条记录,而是显示530条。因此,蒂姆的询问对少数人有效,但对所有人无效

yuvru6vn

yuvru6vn1#

为什么不给我打两个电话 REPLACE :

UPDATE table
SET SKU = REPLACE(REPLACE(SKU, '_ ', '_'), ' _', '_')
WHERE SKU REGEXP ' _|_ ';

注意,mysql并不真正支持任何类型的regex替换,所以 REPLACE 差不多是最好的了(尽管我们可以使用 REGEXPWHERE 条款)。
编辑:
要验证更新是否确实删除/修复了所有坏数据,可以尝试使用以下select查询:

SELECT *
FROM table
WHERE SKU REGEXP ' _|_ ';

请注意,此查询不应返回任何结果,因为如果返回,则意味着更新逻辑不完全正确。

相关问题