Mysql SQL仅替换单列中的字符。乔·布洛格斯给乔·布洛格斯
我想我应该从这个开始Mysql SQL仅替换单列中的字符。乔·布洛格斯给乔·布洛格斯,mysql,sql,replace,Mysql,Sql,Replace,我想我应该从这个开始 UPDATE wp_users SET Name = REPLACE(Name, '.',' ') 但后来我意识到,我无法指定我想影响的唯一一列,display_name列,首先我需要将“.”替换为“”(空格),然后我想用a替换a,或者假设有大量重复的SQL,将每个单词的第一个字母大写 我正在使用MySQL和wordpress 摘要:数据当前为: **display_name** joe.bloggs sally.sue timmy.turner 我需要让它成为: **
UPDATE wp_users
SET Name = REPLACE(Name, '.',' ')
但后来我意识到,我无法指定我想影响的唯一一列,display_name列,首先我需要将“.”替换为“”(空格),然后我想用a替换a,或者假设有大量重复的SQL,将每个单词的第一个字母大写
我正在使用MySQL和wordpress
摘要:数据当前为:
**display_name**
joe.bloggs
sally.sue
timmy.turner
我需要让它成为:
**display_name**
Joe Bloggs
Sally Sue
Timmy Turner
Mysql在这些方面真的很糟糕。我使用子字符串索引、左、右和一些连接来实现以下内容。它看起来有点难看,但很管用。 它不适用于像van.der.sar这样的名字
SELECT CONCAT_WS(' ',
CONCAT(
UCASE(LEFT(SUBSTRING_INDEX('john.doe','.',1),1)),
RIGHT(SUBSTRING_INDEX('john.doe','.',1),length(SUBSTRING_INDEX('john.doe','.',1))-1)
),
CONCAT(
UCASE(LEFT(SUBSTRING_INDEX('john.doe','.',-1),1)),
RIGHT(SUBSTRING_INDEX('john.doe','.',-1),length(SUBSTRING_INDEX('john.doe','.',-1))-1)
)
)
因此,您的更新脚本应该如下所示
Update wp_users set name = CONCAT_WS(' ',
CONCAT(
UCASE(LEFT(SUBSTRING_INDEX(name,'.',1),1)),
RIGHT(SUBSTRING_INDEX(name,'.',1),length(SUBSTRING_INDEX(name,'.',1))-1)
),
CONCAT(
UCASE(LEFT(SUBSTRING_INDEX(name,'.',-1),1)),
RIGHT(SUBSTRING_INDEX(name,'.',-1),length(SUBSTRING_INDEX(name,'.',-1))-1)
)
)
添加示例数据(不同的名称版本)和预期结果。以及格式良好的文本。添加马尔科姆·麦克道尔、柯南·奥布莱恩和卡尔·范德沃尔特怎么样?@jarlh和乔纳森·里斯·戴维斯对不起,我不知道这里发生了什么:p@jarlh@JohnHC,忘了那个,谢谢!很高兴能投票选出对你有帮助的答案:)