2012-03-27 3 views
1

Я редко использую SQL и имею уникальную проблему, которую мне нужно решить. У меня есть таблица под названием «j17_users» с различными столбцами, две из которых - «имя» и «имя пользователя». Есть сотни строк данных.Обновить все поля в таблице SQL

мне нужно изменить содержание "имя", чтобы быть таким же, как "имя пользователя"

К примеру, до:

name: Jon Smith 
username: sql_nub 

после:

name: Sql_nub 
username: sql_nub 

ОК, так некоторые из вас, возможно, заметили, что первая буква изменилась на верхний регистр в приведенном выше примере. Бонусные очки, если бы я мог заставить это произойти и в скрипте. Если это не представляется возможным, чем так и быть ..

+0

Это решается с помощью простого запроса SQL, что трудность? Почему ваш вопрос связан с PHP? – Skrol29

ответ

2

Окупаемость первой:

UPDATE j17_users SET name = CONCAT(UCASE(MID(username,1,1)),MID(username,2)) 
+0

приветствие помощник, работа хорошо. –

+0

Спасибо! Теперь, где вы упомянули те «бонусные очки»? : P jk – Pieter888

0
update YOURTABLENAME set name=username 

Я не эксперт MySQL, но я хотел бы посмотреть в функцию, которая будет захватывать крайний левый символ (в MS SQL Server это функция «ЛЕВЫЙ», обеспечивают длина аргумента 1), в верхнем регистре (в MSSQLServer функция называется UPPER), а затем добавьте ее в остальное поле имени пользователя. Если никто не дает вам ответа на это (что я сомневаюсь), найдите соответствующие функции в MySQL и обновите запрос выше.

Так запросы MS SQL Server будут примерно выглядеть следующим образом:

UPDATE YOURTABLENAME set name = UPPER(LEFT(username, 1)) + RIGHT(username, LEN(username)-1) 
+0

«Правильная функция требует 2 аргумента (ы)» - вам нужно удалить «1» из правой функции. Я не могу сделать это как редактирование, потому что редактирование должно быть не менее 6 символов ... – GarethD

+0

Спасибо, это была более общая идея, однако, человек, который задал вопрос, не собирался использовать заявление в любом случае :) – Eugene

1

пытающегося использовать эту

Update j17_users set name = username 
+0

что работает, было несколько соображений, указывающих на то, как капитализировать. cheers –

0

Попробуйте для установки поля на другие поля дорожит

Update j17users set name = username 
+0

, который работает, имел несколько взглядов, указывающих на то, как капитализировать. ура –

0

Это SQL, который я бы использовал. Это довольно явный

UPDATE j17_users SET name = 'sql_nub' WHERE name='John Smith' 

ИЛИ немного менее явным

UPDATE j17_users SET name = username WHERE name='John Smith' 
+0

не совсем то, что я искал .. неважно, хотя было дано ответ –

0

попробовать:

UPDATE j17_users set name = CONCAT(UPPER(LEFT(username, 1)), LOWER(SUBSTRING(username, 2))) where name not like username; 
+0

Cheers pal, это тоже работает. Хотя есть уловка - он не будет использовать имена, если имя пользователя уже одно и то же (например, регистр нечувствителен) –

0
Update j17_users set name = 
CONCAT(UCASE(Left(username,1)),Right(username,Length(username)-1)) 
+0

синтаксическая ошибка - отсутствует a) .. правильная идея tho! –

+0

спасибо - извините бедный набор текста –

Смежные вопросы