Я новичок в SQL, так что, надеюсь, кто-то может объяснить это для меня. Я попытался выполнить публикацию «Заменить несколько строк в SQL-запросе», но застрял.
Я пытаюсь сделать то же самое, что и создатель вышеуказанной публикации, но с другой таблицей и другими полями. Допустим, следующее поле "ShiptoPlant
" в таблице "BTST
" содержит три записи (в моей таблице тысячи записей) ...
Название таблицы: BTST
---------------
| ShiptoPlant |
| ----------- |
| Plant #1 |
| Plant - 2 |
| Plant/3 |
---------------
Вот что я пытаюсь набрать на экране SQL:
SELECT CASE WHEN ShipToPlant IN ("#", "-", "/") Then ""
ELSE ShipToPlant END FROM BTST;
Я продолжаю получать сообщение (Ошибка 3075) ...
"Syntax error (missing operator) in query expression
'CASE WHEN ShiptoPlant IN (";","/"," ") Then "" ELSE ShipToPlant END'."
Я хочу выполнить эту операцию для каждого символа на клавиатуре, за исключением "*"
, поскольку это подстановочный знак.
Любая помощь, которую вы можете оказать, будет принята с благодарностью!
РЕДАКТИРОВАТЬ: Справочная информация добавлена из комментариев
Я собрал данные на уровне накладных по отдельным позициям от каждого из наших 14 поставщиков за 2008 календарный год. Я пытаюсь нормализовать названия заводов, которые нам дают наши поставщики.
Каждый поставщик может называть завод другим именем, например,
Служба Signode в нашем основном списке могут вызываться поставщиками
Signode Service
Signode - Service.
SignodeSvc
SignodeService
Я пытаюсь удалить не алфавитно-цифровые символы, чтобы попытаться идентифицировать растение с помощью нашего основного списка, создав серию ссылок, которые просматривают первые 10 символов, если совпадений нет, 8 символов, 6, 4 ...
Моя основная проблема в том, что я не знаю, как убрать буквенно-цифровые символы из таблицы. Я буду выполнять эту операцию для нескольких столбцов, но я планировал создать отдельные запросы для редактирования других столбцов.
Возможно, мне нужно выполнить запрос массового обновления, который удалит все буквенно-цифровые символы. Мне все еще неясно, как это написать. Вот с чего я начал, чтобы убрать все пробелы. Это работало отлично, но не удалось, когда я попытался вставить замену
UPDATE BTST SET ShipToPlant = replace(ShipToPlant," ","");
РЕДАКТИРОВАТЬ 2: Дополнительная информация взята из комментариев
Каждый месяц до 100 новых комбинаций названий наших заводов появляются в наших данных счета-фактуры для отдельной позиции - это может представлять тысячи записей счета-фактуры. Я пытаюсь создать быстрый и грязный способ присвоения master_id окончательного имени для каждой перестановки имен растений. Лучший способ увидеть это - посмотреть на поля завода, адреса, города и штата, но проблема в том, что эти поля также имеют различные перестановки, например,
128 Brookview Drive
128 Brookview Lane
Вынимая буквенно-цифровые символы и делая
LEFT(PlantName,#chars) & _
LEFT(Address,#chars) & _
LEFT(City,#chars) & _
LEFT(State,#chars)
и, изменяя количество символов до тех пор, пока не будет найдено соответствие между данными счета-фактуры и списком мастер-растений (обе таблицы содержат поля «Завод», «Адрес», «Город» и «Штат»), вы можете в конечном итоге найти соответствие. Конечно, когда вы начинаете сокращать количество символов, которые вы LEFT
набираете, точность снижается. Я сделал это в Excel и имел приличный доход. Кто-нибудь может порекомендовать лучшее решение?