1

我有表:

Names
id | name    | text
1  | Mr Paul | aaaa
2  | Mr Marc | bbb
3  | Mr John | ccc

如何使用 SQL 删除前缀“先生”?

4

4 回答 4

4

你可以使用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 %';
于 2013-05-15T09:11:34.327 回答
1

您可以使用REPLACE,但请注意,它会在字段中的任何位置找到实例,而不仅仅是在开头。

例如

select replace(x.Name, 'Mr ', '')
from
(select 'Mr Smith' as name
union select 'Mr Jones') as x;
于 2013-05-15T09:11:34.747 回答
1

这是你的答案,

MySQL REPLACE函数完成任务

UPDATE table
   SET name = REPLACE(name, 'Mr ', '') 
WHERE name LIKE 'Mr %'

它更新所有以Mr后缀开头的名称

于 2013-05-15T09:13:59.557 回答
0
SELECT SUBSTRING(name FROM 4) AS newname;
于 2013-05-15T09:12:17.963 回答