我在一张表中有一个记录,比如:
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条。因此,蒂姆的询问对少数人有效,但对所有人无效
1条答案
按热度按时间yuvru6vn1#
为什么不给我打两个电话
REPLACE
:注意,mysql并不真正支持任何类型的regex替换,所以
REPLACE
差不多是最好的了(尽管我们可以使用REGEXP
在WHERE
条款)。编辑:
要验证更新是否确实删除/修复了所有坏数据,可以尝试使用以下select查询:
请注意,此查询不应返回任何结果,因为如果返回,则意味着更新逻辑不完全正确。