MySQL 将替换语句中的Must backout Treasury
匹配为 52 个不同的值。我不明白这怎么可能。那么,MySQL 是如何匹配对象的呢?
我从英国替换为英国,并打印了不同的国家/地区。它有效,但我注意到一个错误Must backout Treasury
as a Country。我将其替换为 NULL
,结果却让 MySQL 将所有国家/地区值替换为 NULL
。
| 19 | 15:22:27 | UPDATE Trade SET country = REPLACE(country, "UK", "United Kingdom")
| 360 row(s) affected Rows matched: 23027 Changed: 360 Warnings: 0
我把事情放回去了
| 20 | 15:22:39 | SET SQL_SAFE_UPDATES = 1
查看发生了什么变化;注意 52 个值
| 21 | 15:22:51 | SELECT DISTINCT(Country) FROM Trade
| 52 row(s) returned
并尝试替换 1 个错误值
| 22 | 15:23:48 | SET SQL_SAFE_UPDATES = 0
| 23 | 15:23:48 | UPDATE Trade SET country = REPLACE(country, "Must backout Treasury", NULL)
| 9773 row(s) affected Rows matched: 23027 Changed: 9773 Warnings: 0 |
编辑:
好的,经过尝试,我可以确认,任何时候您尝试 REPLACE(Field, item, NULL)
时,它都会完全忽略搜索和匹配,而宁愿将 NULL
删除字段中的每个值。
所以,问题仍然存在,有人知道为什么会发生这种情况吗?
最佳答案
因为REPLACE()
将您的输入字符串与值相匹配。它检查输入字符串是否是字段值的子字符串,如果是,则将其替换为您的值。因此,当您尝试将 UK
替换为 United Kingdom
时,它会搜索数据中出现的所有 UK
并将其全部替换。
无需替换,只需使用 WHERE
指定故障记录并进行替换即可。
更新交易集国家=NULL WHERE国家=“必须撤回国库”
或
更新交易设置国家/地区=NULL,其中国家/地区如“%必须撤回国库%”
关于mysql - SQL 的 Replace() 如何匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55150424/