2012-01-19 2 views
0

У меня есть таблица «foo» с полем «текст» varchar, где некоторые строки имеют префикс «-», а другие - нет. Каков наилучший способ обновления строк, чтобы поле «текст» начиналось с знака «-»?Как изменить текстовое поле MySQL так, чтобы все значения были предварительно заданы «-»

ответ

2
UPDATE foo SET text = concat('-', text) WHERE substring(text, 1, 1) <> '-' 
2

Это должно сделать трюк:

UPDATE Foo 
SET textField = CASE WHEN LEFT(textField,1) = '-' THEN textField 
        ELSE CONCAT('-', textField) END 
+0

К не имея «где» положения, это обновление каждого поле (путем замены тех, кто уже есть - сам по себе) или действительно ли пропускает тех, кто не будет изменен с помощью некоторой оптимизации пользовательского запроса? – Vache

+0

@Vache Я бы предположил, что он обновит все строки, возможно, лучше использовать оператор where, если мы обновляем только одно поле, оно может стать волосатым, если нам нужно обновить более одного поля. –

0
UPDATE `foo` 
    SET `text` = CONCAT('-', text) 
    WHERE SUBSTR(text, 1, 1) <> '-'; 
0
UPDATE foo 
SET `text` = CONCAT('-', `text`) 
WHERE `text` NOT LIKE '-%' 
Смежные вопросы