2016-03-17 3 views
0

У меня есть таблица, такие как нижеMysql - первые буквы нескольких слов столбца без CAP_FIRST

Name 
    firstname lastname 
    FirstName Lastname 
    firstName Lastname 
    FirstName lastname 

Я пытаюсь извлечь выгоду из каждой буквы firstname и lastname быть Firstname Lastname во всех 4 случаев.

Любые рекомендации по запросу без использования функции CAP_FIRST? Можно ли использовать регулярное выражение?

+1

Почему вы не можете использовать 'CAP_FIRST'? – Schwern

+0

Возможный дубликат [MySQL - заглавная буква каждого слова в существующей таблице] (http://stackoverflow.com/questions/3278207/mysql-capitalize-first-letter-of-each-word-in-existing-table) – Schwern

+1

Из приведенных вами примеров похоже, что вы также хотите преобразовать все остальные буквы в строчные буквы. Это может быть не идеально для 'Firstname McLastname' и т. Д. –

ответ

2

Это запрос, который работает:

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; 

Это результат:

Name 
Firstname Lastname 
Firstname Lastname 
Firstname Lastname 
Firstname Lastname 

Для 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))); 

Привет

+0

Предостережение: это будет делать только первые два слова. «first middle last» приведет к «First Middle last». – Schwern

+0

Спасибо .. Да, он работает как указано выше указанный комментарий - также мне нужно обновить столбец. –

+0

Это было необходимо Имя Фамилия, а не First Middle Last. Для ОБНОВЛЕНИЯ см. Обновленный ответ. Было бы неплохо, если бы вы проголосовали и/или приняли ответ ... и вы немного поработали с SQL. :) –