Mysql-大写不带CAP_FIRST的列的多个单词的第一个字母

Sta*_*ser 1 regex mysql uppercase

我有一个如下表

    Name
    firstname lastname
    FirstName Lastname
    firstName Lastname
    FirstName lastname
Run Code Online (Sandbox Code Playgroud)

我想利用的每个字母firstname,并lastnameFirstname Lastname在所有4例。

在不使用CAP_FIRST函数的情况下对查询有任何建议吗?我可以使用正则表达式吗?

Whi*_*her 5

这是一个有效的查询:

SELECT 
CONCAT(
    UPPER(SUBSTRING(Name,1,1)),
    LOWER(SUBSTRING(Name,2,Locate(' ', Name)-1)),
    UPPER(SUBSTRING(Name,Locate(' ', Name)+1,1)),
    LOWER(SUBSTRING(Name,Locate(' ', Name)+2)))
FROM NameTable;
Run Code Online (Sandbox Code Playgroud)

结果:

Name
Firstname Lastname
Firstname Lastname
Firstname Lastname
Firstname Lastname
Run Code Online (Sandbox Code Playgroud)

要使用UPDATE列,

UPDATE NameTable 
SET NameTable.Name = CONCAT(
    UPPER(SUBSTRING(Name,1,1)),
    LOWER(SUBSTRING(Name,2,Locate(' ', Name)-1)),
    UPPER(SUBSTRING(Name,Locate(' ', Name)+1,1)),
    LOWER(SUBSTRING(Name,Locate(' ', Name)+2)));
Run Code Online (Sandbox Code Playgroud)

问候

  • 这实际上重复了所有行的第一个单词的第一个字母,没有空格,请勿使用! (2认同)