![](/img/trans.png)
[英]Mysql @count:= @count + 1 update column based on the sort order of another query
[英]how to make a query update a column in a find and replace sort of fasion mysql?
我有一个翻译数据库,并且到目前为止,在便笺字段中已添加了诸如休闲演讲/礼貌演讲之类的笔记。 但是现在,我在另一列中列出了这些演讲形式。 我想将这些信息移至其注释中。 我可以在下面的查询中进行设置,以基于在备注字段中找到关键字“随意语音”或“礼貌语音”来设置新列。
UPDATE `mrhowtos_main`.`eng-jap` SET `form` = 'Casual form' WHERE `notes` LIKE '%Casual speech%';
但是,当我设置新的表单字段时,我还想从备注字段中删除该“随意语音”或“礼貌语音”。 笔记中通常会包含诸如“年轻女孩使用的随意讲话”之类的条目。 所以我不能只将字段设置为“”。 否则我会在笔记中丢失这些额外的信息。 “休闲语音”并不总是在该列的开头,有时是在中间或结尾。 我如何使查询删除“休闲语音”之类的注释部分,因为它设置了包含语音形式的新列,但保留了其余注释?
SUBSTRING()
最有可能工作。 像这样:
UPDATE `mrhowtos_main`.`eng-jap`
SET `form` = 'Casual form', `notes` = SUBSTRING(`notes`, -16)
WHERE `notes` LIKE '%Casual speech%';
假设任何包含"Casual speech"
实际上都包含"Casual speech, "
。 负值告诉MySQL从字符串的末尾开始许多字符。 您可以根据需要进行调整。
对于"polite speech"
您基本上重复了同样的事情。
编辑:
如果您要删除的字符串几乎在任何地方,那么REPLACE()
可能是一个更好的选择:
UPDATE `mrhowtos_main`.`eng-jap`
SET `form` = 'Casual form', `notes` = REPLACE(`notes`, 'Casual speech', '')
WHERE `notes` LIKE '%Casual speech%';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.