我不能用mysql中的update,set,replace替换注册表中的部分名称

e0bqpujr  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(233)

我使用update set replace来替换许多注册中心中某个名称的某些内容,但由于某些原因现在不起作用。

UPDATE stores
SET tit_doc = REPLACE( tit_doc, 'WORKSHOP WEST COAST NUMBER 3', ' ' )
WHERE store_loc LIKE "%3A12%"

通过这种方式,我将“workshop west coast number 3”替换为nothing,因此基本上从所有选中的注册表中删除它,但它显示
受影响的行: 0(查询耗时0.1036秒)
我试过了

SELECT REPLACE (tit_doc, 'WORKSHOP WEST COAST NUMBER 3', ' ' ) replace_result
FROM stores
WHERE store_loc LIKE "%3A12%"
ORDER BY `replace_result` ASC 
LIMIT 0 , 30

它显示了
显示第0-29行(共50行,查询耗时0.0609秒)
并显示在请求的位置中包含这些字符的所有注册表。
如何正确地执行此操作?

yizd12fk

yizd12fk1#

我认为问题的根源是在sql中混合了单引号和双引号。它们是不可交换的。单引号用于标识字符串。双引号用于标识符,例如列别名或表名。update语句中的where子句使用双引号。试着把它改成单引号。
更令人困惑的是,此行为取决于服务器设置以及运行的语句类型。
查看何时在mysql和中使用单引号、双引号和反引号https://dev.mysql.com/doc/refman/8.0/en/string-literals.html.

sc4hvdpw

sc4hvdpw2#

我试着替换我想替换的字符串的一半,结果它成功了,所以我试了一个更长的字符串,以此类推,我到了一个点,它显示没有结果,没有东西可以被替换。
所以我所做的是替换到它允许的位置,然后替换(用另一个查询)剩下的内容。
我在问题中使用的例子不是我的真实姓名(因为它有关于我工作的非常具体的信息)。因此,我认为这可能与要替换的字符串的长度有一些限制有关。

相关问题