我需要更新MySQL数据库。我有一张学校表,上面有一个名为name的栏目。有些学校的名字缩写了特定的单词。例如,“SCHOOL”缩写为“SCH”。我想把所有出现的“SCH”替换为“SCHOOL”。我已经在SQL中使用了以下更新命令:

UPDATE `schools`
SET `name` = replace(`name`, ' SCH ', ' SCHOOL ')

它工作得很好,但是数据库中有许多以“SCH”结尾的学校,由于“SCH”后面缺少空间而没有更新。如果不将诸如“JOHN SCHULTZ HIGH”之类的字符串替换为“JOHN SCHOOLUTZ HIGH”,我将如何替换所有出现在后面的“SCH”字符串?列中是否有表示值结尾的字符?例如:
UPDATE `schools`
SET `name` = replace(`name`, ' SCH<END>', ' SCHOOL')

其中表示该列的值中SCH之后不再有字符。提前谢谢你的帮助!

最佳答案

这是个问题,因为你只想替换“约翰·舒尔茨”中的最后一个SCH。
两种可能性第一种只适用于结尾SCH:

UPDATE schools
SET name = left(name, length(name) - 4)
where name like '% SCH';

第二个适用于所有SCH:
UPDATE schools
SET name = trim(replace(concat(name, ' '), ' SCH ', ' SCHOOL '));

09-11 19:59
查看更多