我有表:
Names
id | name | text
1 | Mr Paul | aaaa
2 | Mr Marc | bbb
3 | Mr John | ccc
如何使用 SQL 删除前缀“先生”?
你可以使用REPLACE()
函数。
SELECT REPLACE(name, 'Mr ', '' ) FROM Names;
为了更新表做:
UPDATE Names set name = REPLACE(name, 'Mr ', '' );
对此任务的优化几乎没有评论:如其他答案中所述,您可以使用SUBSTRING
函数来实现 - 如果您知道每一行都以开头,这种方法可能会更快Mr
- 数据库引擎不必查找Mr
字符串(这会消耗一些时间)但任意削减前4个字母。
组合解决方案Mr
(仅在开始时匹配,但使用更快SUBSTRING
而不是REPLACE
):
UPDATE Names SET name = SUBSTRING(name FROM 4) WHERE name LIKE 'Mr %';
您可以使用REPLACE
,但请注意,它会在字段中的任何位置找到实例,而不仅仅是在开头。
例如
select replace(x.Name, 'Mr ', '')
from
(select 'Mr Smith' as name
union select 'Mr Jones') as x;
这是你的答案,
MySQL REPLACE函数完成任务
UPDATE table
SET name = REPLACE(name, 'Mr ', '')
WHERE name LIKE 'Mr %'
它更新所有以Mr
后缀开头的名称
SELECT SUBSTRING(name FROM 4) AS newname;