SQL Update - изменение строки - PullRequest
2 голосов
/ 15 июня 2011

У меня есть такая таблица:

Users(id,name)

Мне нужен запрос, чтобы найти имя, начинающееся с 'asdf_', и обновить все строки, удалив этот префикс.

например:

Перед запросом таблица содержит:

asdf_john
asdf_jane

После запроса я хочу:

john
jane

Спасибо за помощь

Ответы [ 4 ]

6 голосов
/ 15 июня 2011

sql-функция, которую вы можете использовать: Substring: SUBSTR (Пример: http://www.1keydata.com/sql/sql-substring.html)

Для вашей таблицы ПОЛЬЗОВАТЕЛИ:

UPDATE USERS SET NAME = SUBSTRING (NAME, 6) WHERE NAME LIKE 'asdf_%';
1 голос
/ 15 июня 2011
Update Users
set name = trim(leading 'asdf_' from name)
where name like 'asdf_%'
0 голосов
/ 15 июня 2011

Это должно работать, удаляя начальный «asdf_» только из всех имен, начинающихся с «asdf _»

UPDATE `Users` 
SET `name` = SUBSTRING(`name`, 6) 
WHERE `name` REGEXP '^asdf_';
0 голосов
/ 15 июня 2011
UPDATE `Users` SET `name` = replace(`name`, 'asdf_', '') WHERE `name` LIKE 'asdf\_%' ESCAPE '\';

Добавлено предложение WHERE на основе ответа @ UltraCommit, поэтому оно заменяется, когда находит строку в начале.

ИЛИ на основе ответа @ McPepper:

UPDATE `Users` SET `name` = SUBSTRING(`name`, 6) WHERE `name` LIKE 'asdf\_%' ESCAPE '\';

Если вы хотите заменить только тогда, когда строка находится в начале.Замените число 6 на количество символов, которое строка, которую вы хотите заменить, имеет + 1.В этом случае ваша строка asdf_ имеет длину 5 символов, +1 становится 6.Это позиция символа, в которой БД начнет хранить строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...