Запрос на обновление SQL - PullRequest
0 голосов
/ 30 августа 2010

Скажем, я хотел выполнить обновление в базе данных, которая содержала информацию, например, об автомобилях в таблице с таким же именем.

Обновление, которое я ищу, состоит в изменении обозначения в таблице в модели с «Ford» на «Ford-», т. Е. Только в тех случаях, когда обозначение «Ford», а не в тех, которые уже имеютОбозначение модели "Ford-"

Запустив приведенный ниже SQL-запрос, получу ли я ожидаемый результат?

UPDATE cars  

SET model='Ford-' WHERE model='Ford'    

Это, по моему мнению, должно обновлять только те экземпляры автомобилей, у которых обозначение модели обозначено как "Ford", и заменять их на "Ford-", и не будет пытаться обновить что-либо, обозначаемое как "Ford".- «аж так уже или как?

Если бы это было так, я подумал, существует ли чистая структура SQL-запроса, которую можно было бы использовать, чтобы гарантировать, что были изменены только автомобили с моделью = "Ford", а не автомобили с моделью = "Ford-"

Я спрашиваю, поскольку я не уверен, каким образом SQL будет определять строку поиска «Ford» в запросе выше, т. Е. Будет ли SQL искать точное совпадение или будет ли слово «Ford-» в модели вызывать"ложно положительный" ?Не делали SQL-запросов годами.

Не говорите о нормальных формах и т.п., я не отвечаю за создание БД / таблиц и т. Д. Я просто рассматриваю возможность очистки некоторой информации в БД.

Таблица автомобилей выглядит следующим образом:

cars  
'id', 'int(10) unsigned', '', 'PRI', '', 'auto_increment'  
'something0', 'varchar(50)', '', 'UNI', '', ''  
'something1', 'varchar(50)', 'YES', '', '', ''  
'something2', 'varchar(50)', 'YES', '', '', ''  
'something3', 'text', 'YES', '', '', ''  
'something4', 'text', 'YES', '', '', ''  
'something5', 'varchar(50)', 'YES', '', '', ''  
'something6', 'varchar(50)', 'YES', '', '', ''  
'something7', 'varchar(15)', 'YES', '', '', ''  
'model', 'varchar(255)', 'YES', '', '', ''  

Комментарии очень приветствуются

Ответы [ 3 ]

2 голосов
/ 30 августа 2010

Вы правы:

... WHERE model='Ford'

- точное совпадение (соответствует только «Ford», не соответствует «Ford-»). Для совпадения подстроки вы должны использовать

... WHERE model LIKE 'Ford%'

(соответствует всему, что начинается с «Форд» - но это явно не то, что вы хотите).

См. Документацию для ОБНОВЛЕНИЕ и ГДЕ .

1 голос
/ 30 августа 2010

Будет выполнен поиск соответствия,

UPDATE cars SET model='Ford-' WHERE model='Ford' 

будет изменять только таблицы, в которых модель точно == 'Ford'

0 голосов
/ 30 августа 2010

, если вам нужно неточное совпадение с «Фордом», но не с «Фордом», потому что в поле также есть что-то еще (что заставляет меня думать, что Форд может быть)1003 *

UPDATE cars   
SET model= Replace(model, 'Ford','Ford-') 
WHERE model like 'Ford%' and model not like 'Ford-%'   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...