2015-10-26 5 views
2

мне нужен скрипт для запуска, который будет обновлять столбец «given_name» и изменить все первые буквы в столице ..первые буквы всех строк MySQL

настоящее время у меня этот код .. и ничего не происходит ..

DROP PROCEDURE IF EXISTS CAPITALIZE; 
DELIMITER $$ 

CREATE PROCEDURE CAPITALIZE() 
BEGIN 
DECLARE n INT DEFAULT 0; 
DECLARE i INT DEFAULT 1; 
SELECT COUNT(*) INTO n FROM users; 
-- SET n = (SELECT COUNT(*) FROM users); 
SET i=0; 
WHILE (i<=n) DO 
    UPDATE users SET given_name = CONCAT(UPPER(SUBSTR(given_name,1,1)), SUBSTR(given_name,2)) WHERE user_id = n; 
    UPDATE users SET last_name = CONCAT(UPPER(SUBSTR(last_name,1,1)), SUBSTR(last_name,2)) WHERE user_id = n; 

    SET i = (i + 1); 
END WHILE; 
END $$ 
DELIMITER ; 
+0

http://stackoverflow.com/a/ 4263289/1816093 – Drew

+0

Мне нужно запустить скрипт в MySQL, который будет выполнять ту же функцию. – EdSniper

+0

Как я могу загладить каждую первую букву каждого слова. @Drew – EdSniper

ответ

4

Как уже упоминалось @Drew, вы могли бы быть лучше просто делать одеяло UPDATE заявления для всего users таблицы:

UPDATE users 
SET given_name = CONCAT(UPPER(SUBSTR(given_name,1,1)), LOWER(SUBSTR(given_name,2))), 
    last_name = CONCAT(UPPER(SUBSTR(last_name,1,1)), LOWER(SUBSTR(last_name,2))) 

Чтобы выключить безопасное мо обновления де, который препятствует выше запрос от работы, типа этого:

SET SQL_SAFE_UPDATES = 0; 

Вот рабочая скрипку, которая демонстрирует приведенный выше запрос:

SQLFiddle

+0

Я бы предложил цикл while. Просто сделайте это прямо в mysql. Единственное обновление stmt с заданным значением, последнее – Drew

+1

У меня есть тысячи записей .. – EdSniper

+1

+ Tim Biegeleisen - вы поняли это правильно, но когда я запустил этот скрипт, он все равно не влияет на какие-либо строки или не вносит никаких изменений. – EdSniper