Как эффективно использовать функцию замены SQL? - PullRequest
2 голосов
/ 13 февраля 2009

Я пытаюсь заменить несколько строк в базе данных Access, чтобы следовать новому набору правил данных. Например, слово Форт в Форт-Майерс указано как Ft., Ft и Fort. Я хотел бы внести глобальные изменения в группу. Я знаком с командой SQL replace, но мне интересно, делал ли кто-то что-то подобное с хранимой процедурой или имел опыт работы с чем-то вроде этого.

Ответы [ 4 ]

1 голос
/ 14 февраля 2009

Если ваша цель состоит в том, чтобы стандартизировать названия городов, которые похожи на ~ Fort Myers, вы должны иметь возможность сделать что-то вроде этого:

UPDATE Table SET City = 'Fort Myers' WHERE City LIKE 'F%Myers';

Это должно заменить любое поле города в любом ряду, где город начинается с буквы F и заканчивается на Myers. Это может быть то, что вы хотите, но будьте очень осторожны.

1 голос
/ 13 февраля 2009

Приведение в порядок адресов может быть кошмаром. Вам может понадобиться создать таблицу замены:

ShouldBe    Current
Fort Myers  Ft Myers
Foot Hill   Ft Hills

В большинстве случаев столбец ShouldBe можно заполнить запросами на обновление, но вы также сможете просмотреть результаты перед обновлением основной таблицы. Это также поможет в дальнейшем вводе данных.

1 голос
/ 13 февраля 2009

Вы должны быть действительно, очень осторожно , чтобы вы не заменили больше, чем вы намеревались.

Сначала создайте резервную копию на случай, если что-то пойдет не так.

Всегда начинайте с SELECT, чтобы сначала отфильтровать записи. Внимательно просмотрите результаты.

SELECT * FROM Table WHERE City LIKE "%Ft. Myers%" 

Тогда сделайте Замены, как сказал Карлтон.

1 голос
/ 13 февраля 2009

Тяжелее, чем кажется мирянину ...

Невозможно обойти это, кроме как сделать замену для каждой вещи, которая вам не нравится, превратившись в то, что вам нравится. НО БУДЬТЕ ОЧЕНЬ ОСТОРОЖНЫ ... непредвиденные последствия и все. Я рекомендую делать выбор перед каждым обновлением, чтобы точно знать, что вы будете обновлять.

Итак, в вашем случае с Fort Myers вам нужно сделать 3 замены:

Replace("Ft. Myers", "Fort Myers")
Replace("Ft Myers", "Fort Myers")
Replace("Fort. Myers", "Fort Myers")

Если у вас много данных и много чего можно изменить, это может быть ОГРОМНАЯ задача. Но нет никакого «автоматизированного» способа сделать это - SQL не использует нечеткую логику, вы должны точно указать все, что вы хотите, чтобы он делал.

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