Vvmebel.com

Новости с мира ПК
10 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Access replace пример

Как заменить несколько символов в SQL Access?

1 [2009-04-14 20:48:00]

Я новичок в SQL, поэтому, надеюсь, кто-то может это сказать для меня. Я попытался выполнить запись «Заменить несколько строк в SQL Query», но я застрял.

Я пытаюсь сделать то же самое, что и создатель вышеуказанной публикации, но с другой таблицей и разными полями. Скажем, что следующее поле » ShiptoPlant » в таблице » BTST » имеет три записи (у моей таблицы действительно тысячи записей).

Имя таблицы: BTST

Вот что я пытаюсь ввести на экране SQL:

Я продолжаю получать сообщение (Ошибка 3075).

Я хочу сделать эту операцию для каждого символа на клавиатуре, за исключением «*» , так как это подстановочный знак.

Любая помощь, которую вы могли бы предоставить, была бы с благодарностью!

EDIT: справочная информация, добавленная из комментариев

Я собрал данные уровня счета-фактуры от каждого из наших 14 поставщиков за 2008 календарный год. Я пытаюсь нормализовать названия растений, которые даются нам нашими поставщиками.

Каждый поставщик может вызвать завод под другим именем, например.

Служба Signode в нашем основном списке может быть вызвана поставщиками

Я пытаюсь разбить не-буквенно-цифровые символы, чтобы я мог попытаться идентифицировать завод, используя наш основной список, создав серию ссылок, которые смотрят на первые 10 char, если нет совпадения, 8 char, 6, 4.

Моя основная зависание в том, что я не знаю, как удалить буквенно-цифровые символы из таблицы. Я буду выполнять эту операцию в нескольких столбцах, но я планировал создавать отдельные запросы для редактирования других столбцов.

Возможно, мне нужно сделать массовый запрос на обновление, который будет удалять все буквенно-цифровые символы. Я все еще не понимаю, как это написать. Вот что я начал с вынимать все пространства. Он отлично работал, но не удался, когда я попытался вставить замену

РЕДАКТИРОВАТЬ 2: Дополнительная информация, полученная из комментариев

Каждый месяц до 100 новых перестановок наших названий растений отображаются в наших данных счетов-фактур, что может представлять тысячи записей счетов. Я пытаюсь построить быстрый и грязный способ присвоить master_id окончательного имени каждой перестановке названий фабрик. Лучший способ, которым я могу это сделать, — посмотреть поля завода, адреса, города и штата, но проблема заключается в том, что эти поля также имеют различные перестановки, например,

Вынимая буквенно-цифровые символы и делая

и путем изменения количества символов до тех пор, пока не будет найдено совпадение между данными счета-фактуры и листом Мастер-завода (обе таблицы содержат поля Plant, Address, City и State), вы можете найти совпадение. Конечно, когда вы начинаете сокращать количество символов, которые вы LEFT ing, точность становится скомпрометированной. Я сделал это в Excel и получил приличный доход. Может ли кто-нибудь рекомендовать лучшее решение?

Access replace пример

ситуация следующая:
надо выполнить простой запрос в Access: взять данные из одной ячейки таблици №1, поменять в них все «-» на «», найти такие же данные в таблице №2 (там они без «-«), ну и вывести результат. в самом Access такой запрос работает «на ура», все отлично получается. Но мне это надо сделать из программы на VB6. и эта *** пишет то что в сабже
всё перерыл, нигде и намека нет как обойти это, может тут кто сталкивался и в курсе ?

запрос такой:
код:
без «Replace» все работает нормально (если вручную поудалять эти «-«)

Добавление от 21.09.2004 09:55:

по мотивам исправленного
а!. есть. точно.. но как её через Jet этот провести ?

Добавление от 21.09.2004 10:01:

попробовал запустить выполнение этого запроса, написанного в Акцессе
код: выдает то же сообщение. так в этом случае я не передаю функцию Replace сквозь Jet (или я где то не догоняю)

Фдуч
Вот как выглядит твой запрос, построенный в визарде Аксесса:

код: и работает он правильно.

Добавление от 21.09.2004 10:44:

рекомендация — создать этот запрос в Аксессовой базе и вместо SQL-строки сразу дергать рекордсет запроса — не пофиг откуда данные — из запроса или таблицы, не так ли?

Добавление от 21.09.2004 10:53:

prOf7te
да там одна лишняя скобка в самом конце, но в программе все правильно, это сюда я свой запрос сильно упростил, а то он там на 12 строках чтоб читабельно было. и куча полей ещё

Добавление от 21.09.2004 10:56:

я практически все свои запросы сначала «внутри» пробую, корректирую, а потом в VB переношу с корректировкой под синтаксис VB, это первый запрос который просто необхоим в программе и который «гонит»

Akina
рекомендация — создать этот запрос в Аксессовой базе и вместо SQL-строки сразу дергать рекордсет запроса — не пофиг откуда данные — из запроса или таблицы, не так ли?
так ли. абсолютно пофиг (уже), но как дергать рекордсет запроса . не так как я написал выше: db.QueryDefs(«Запрос1»).Execute .
я пробовал в этом «Запрос1» и создавать новую таблицу с нужными результатами и просто делать запрос чтоб его результаты поиметь, но выскакивает та же ошибка.

может как то по другому дергать рекордсет запроса .

prOf7te
ммм. у меня office2003Sp1

к стати, а как все это сделать без Replace . но это второй вопрос.

Добавление от 21.09.2004 11:10:

т.е. вычисляемую тем же Replace, но в первой таблице. интересно. попробую. через час наверное

Добавление от 21.09.2004 11:16:

prOf7te
слушай, а как в таблице создать вычисляемое поле . т.е. в данном случае надо взять значение из поля «SZH_Number» из таблицы Tbl1, заменить в нем все «-» на «пусто», найти такое же значение в таблице 2 и поставить в эту ячейку значение из соответствующей строки таблицы 2, но из колонки «Price». КАК ЭТО СДЕЛАТЬ.

Добавление от 21.09.2004 11:21:

блин. упростим вопрос .. заменить как выше рассказано и результат поместить в другую ячейку этой же таблицы .
в Акцессе я слаб

может как то по другому дергать рекордсет запроса .
Создаем этот запрос в базе аксесса, обзываем его, скажем, qst1.

Меняем твой код на:

Фдуч
Не совсем: создаешь новую колонку в таблице, берешь значение из поля «SZH_Number» из таблицы Tbl1, заменяешь в нем все «-» на «пусто», — и так и оставляешь. То есть, в таблице у тебя присутствует значение в двух вариантах.
А уже в запросе сравниваешь второй вариант с таблицей №2.

Вот только не помню, можно ли это делать непосредственно в таблице — или нужно делать промежуточный запрос.

Sql_String_ADO = «SELECT * From qst1»

ну там про replace ни слова. но глубже ссылки пока не капал

Добавление от 21.09.2004 11:52:

Akina
все равно та же ошибка. даже если этот replace находится в Акцессе . просто выполнение запроса
Sql_String_ADO = «SELECT * From qst1»
With Zakaz_frm.Adodc2
.ConnectionString = «FILE NAME=c:zakaz.udl»
.RecordSource = Sql_String_ADO
End With

Set Zakaz_frm.DataGrid2.DataSource = Zakaz_frm.Adodc2

вызывает эту ошибку.

Добавление от 21.09.2004 11:58:

сделал в таблице 1 новую колонку, сделал запрос в Акцесс на обновление (в новую колонку пишется «очищеное» значеное из колонки SZH_Number)
команда VB на выполнение этого запроса (db.QueryDefs(«Запрос1»).Execute) выдает ту же ошибку.

Фдуч
Та не выполняй ты тот запрос.

Пиши в VB «SELECT * FROM «Запрос1» .

prOf7te
а это типа не заставляет этот «Запрос1» выполнятся . результат то появляется при выполнении этого запроса. пробовал так, ту же ошибку дает.

придумал обойти эту проблему изначально, данные с «-» в таблицу 1 заносятся моей программой. «-» сделано для удобства восприятия и запоминания длинных номеров. Сделаю «служебную» колонку в этой же таблице куда будет писаться тот же номер но без «-«, и в последствии при поиске или сравнении буду работать с этой колонкой, а для вывода для юзера, буду использовать «удобную» колонку.
получится двойное храненние одних и тех же данных , но блин, как иначе!? если не работает этот Replace.

данные с «-» в таблицу 1 заносятся моей программой. «-» сделано для удобства восприятия и запоминания длинных номеров. Сделаю «служебную» колонку в этой же таблице куда будет писаться тот же номер но без «-«, и в последствии при поиске или сравнении буду работать с этой колонкой, а для вывода для юзера, буду использовать «удобную» колонку.
А тебе не кажется, что можно при отображении использовать ШАБЛОН ВЫВОДА, а данные хранить без символов заполнения?

Akina
логично. но у меня 6 шаблонов номеров запчастей..

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

Akina
о нет. так я уже забодался с этой прогой. пусть пока работает так как сделал. переделывать нет никакого желания.
был бы я программистом тут, переделал бы. но я просто замдиректора
но спасибо за идею.

2All
а вообще интересно было бы узнать способ обойти ошибку из сабжа, насколько жизнь была бы легче!

Фдуч
Отстал от темы.

А если написать собственную функцию с перебором строки и заменой символов?

цитата: а это типа не заставляет этот «Запрос1» выполнятся . результат то появляется при выполнении этого запроса. пробовал так, ту же ошибку дает. IMHO, Запрос1 должен выполняться в среде Access и в VB передаваться готовый результат.

Читать еще:  Data access layer

В общем, если интересно, с понедельника я на работе — перешли на почту образец таблицы с 10-15 стоками и образец запроса. Попробуем как-нибудь.

prOf7te
че то не представляю как написать в моем случае свою функция. т.е. не представляю как её выполнить в запросе?

. отправил тебе на почту примерчик на VB, в котором выдается эта ошибка.

Фдуч
А это не про то же?

Фдуч
Попробовал только что нарисовать свою функцию — VB тоже пишет «Not defined».
Похоже, у Access есть определенный список функций «на експорт» — и входят туда не все.
Или можно любую функцию так объявить — только я про такое не слышал.

Слушай, сохрони свою базу в формате 97 — у меня ж её открыть нечем.

Фдуч надо подумать как это к моему случаю применить. прочитать список функций поддерживаемых ЯДРОМ Jet понять что пользовательские функции туда никаким боком не входят опечалится и искать work around.

prOf7te Или можно любую функцию так объявить — AFAIK — нет

Когда забегем на базу Access с наружи в работает только Jet когда через Аccess то к игре подключается еще и Аccess VBA коей Jet-у подкидывает функций. Вот и все различия. (Можно ли Jet-у самому подкинуть функций не знаю не настолько специалист — если кто знает ответ сам бы с удовольствием послушал)

Работа со строками в VBA: InStr, LCASE, UCase, Left, Right, Mid, LTrim, RTrim, Trim, Len, Replace, Space, StrComp, String, StrReverse

В этой статье разберем работу со строками в VBA на примерах функций InStr, LCASE, UCase, Left, Right, Mid, LTrim, RTrim, Trim, Len, Replace, Space, StrComp, String, StrReverse.

Строки — это последовательность символов, которая может состоять либо из алфавитов, цифр, специальных символов, либо из всех них. Переменная называется строкой, если она заключена в двойные кавычки «».

Синтаксис

Примеры

Строковые функции

Существуют предопределенные функции VBA String, которые помогают разработчикам эффективно работать со строками. Ниже приведены методы String, поддерживаемые в VBA. Пожалуйста, нажмите на каждый из методов, чтобы знать подробно.

Название функции и описание

InStr

Функция InStr возвращает первое вхождение одной строки в другую строку. Поиск происходит слева направо.

Синтаксис

Параметр Описание

  • Пуск — необязательный параметр. Указывает начальную позицию для поиска. Поиск начинается с первой позиции слева направо.
  • String1 — требуемый параметр. Строка для поиска.
  • String2 — требуемый параметр. Строка, по которой выполняется поиск String1.
  • Compare — Необязательный параметр. Указывает сравнение строк.Он может принимать следующие значения.
  • 0 = vbBinaryCompare — выполняет двоичное сравнение (по умолчанию)
  • 1 = vbTextCompare — выполняет сравнение текста

пример

Добавьте кнопку и добавьте следующую функцию.

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1 : 6
Line 2 : 0
Line 3 : 8
Line 4 : 9
Line 5 : 2
Line 6 : 16
Line 7 : 11

Возвращает первое вхождение указанной подстроки. Поиск происходит слева направо.

Функция InStrRev возвращает первое вхождение одной строки в другую строку. Поиск происходит справа налево.

Синтаксис

Параметр Описание

  • String1 — требуемый параметр. Строка для поиска.
  • String2 — требуемый параметр. Строка, по которой выполняется поиск String1.
  • Пуск — необязательный параметр. Указывает начальную позицию для поиска. Поиск начинается с первой позиции справа налево.
  • Compare — Необязательный параметр. Указывает сравнение строк.Он может принимать следующие значения.
  • 0 = vbBinaryCompare — выполняет двоичное сравнение (по умолчанию)
  • 1 = vbTextCompare — выполняет сравнение текста

пример

Добавьте кнопку и установите следующую функцию.

После выполнения вышеуказанного скрипта он производит следующий результат.

Line 1 : 6
Line 2 : 6
Line 3 : 8
Line 4 : 0
Line 5 : 2
Line 6 : 2
Line 7 : 0

Возвращает первое вхождение указанной подстроки. Поиск происходит справа налево.

LCASE

Функция LCase возвращает строку после преобразования введенной строки в строчные буквы.

Синтаксис

пример

Добавьте кнопку и поместите следующую функцию внутри нее.

После выполнения вышеуказанного скрипта он производит следующий вывод.

Line 1 : microsoft vbscript
Line 2 : ms vbscript
Line 3 : microsoft

Возвращает нижний регистр указанной строки.

UCase

Функция UCase возвращает строку после преобразования введенной строки в буквы буквы UPPER.

Синтаксис

пример

Добавьте кнопку и поместите следующую функцию внутри нее.

После выполнения вышеуказанного скрипта он производит следующий вывод.

Line 1 : MICROSOFT VBSCRIPT
Line 2 : MS VBSCRIPT
Line 3 : MICROSOFT

Возвращает верхний регистр указанной строки.

Функция Left возвращает указанное количество символов с левой стороны данной входной строки.

Синтаксис

Параметр Описание

  • String — обязательный параметр. Строка ввода, из которой указанное число символов должно быть возвращено с левой стороны.
  • Длина — требуемый параметр. Целое число, определяющее количество возвращаемых символов.

пример

Добавьте кнопку и добавьте следующую функцию.

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1 : Mi
Line 2 : MS VB
Line 3 : microsoft

Возвращает определенное количество символов с левой стороны строки.

Right

Функция Right возвращает указанное количество символов с правой стороны данной входной строки.

Синтаксис

Параметр Описание

  • String — обязательный параметр. Строка ввода, из которой указанное число символов должно быть возвращено с правой стороны.
  • Длина — требуемый параметр. Целое число, которое задает количество возвращаемых символов.

пример

Добавьте кнопку и добавьте следующую функцию.

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1 : pt
Line 2 : CRIPT
Line 3 : microsoft

Возвращает определенное количество символов с правой стороны строки.

Mid функция возвращает указанное количество символов из заданной входной строки.

Синтаксис

Параметр Описание

  • String — обязательный параметр. Строка ввода, из которой задано количество символов, которые нужно вернуть.
  • Начало — требуемый параметр. Целое число, определяющее начальную позицию строки.
  • Длина — необязательный параметр. Целое число, определяющее количество возвращаемых символов.

Добавьте кнопку и добавьте следующую функцию.

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1 : icrosoft VBScript
Line 2 : icros
Line 3 : osoft V

Возвращает определенное количество символов из строки на основе указанных параметров.

LTrim

Функция Ltrim удаляет пробелы с левой стороны строки.

Синтаксис

пример

Добавьте кнопку и добавьте следующую функцию.

Когда вы выполняете функцию, она производит следующий вывод.

After Ltrim : Microsoft VBScript

Возвращает строку после удаления пробелов в левой части указанной строки.

RTrim

Функция Rtrim удаляет пробелы с правой стороны строки.

Синтаксис

пример

Добавьте кнопку и добавьте следующую функцию.

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

After Rtrim : Microsoft VBScript

Возвращает строку после удаления пробелов в правой части указанной строки.

Функция Trim удаляет как ведущее, так и конечное пустое пространство данной входной строки.

Синтаксис

пример

Добавьте кнопку и добавьте следующую функцию.

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

After trim : Microsoft VBScript

Возвращает строковое значение после удаления как верхнего, так и конечного пробелов.

Функция Len возвращает длину данной входной строки, включая пробелы.

Синтаксис

пример

Добавьте кнопку и добавьте следующую функцию.

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Length of var1 is : 18
Length of var2 is : 36

Возвращает длину данной строки.

Replace

Функция Replace заменяет указанную часть строки на определенную строку, указанное количество раз.

Синтаксис

Параметр Описание

  • String — обязательный параметр. Строка ввода, которую нужно искать для замены.
  • Find — требуемый параметр. Часть строки, которая будет заменена.
  • Replacewith — обязательный параметр. Строка замены, которая будет заменена на параметр find.
  • Start — необязательный параметр. Задает начальную позицию, из которой нужно искать и заменять строку. Значение по умолчанию — 1.
  • Count — необязательный параметр. Указывает количество раз, которое должна выполняться замена.
  • Compare — Необязательный параметр. Указывает метод сравнения, который будет использоваться. Значение по умолчанию — 0.
  • 0 = vbBinaryCompare — выполняет двоичное сравнение
  • 1 = vbTextCompare — выполняет текстовое сравнение

пример

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1: This is MS VBScript Programming
Line 2: This is vbScript Programming
Line 3: Th## ## VBScript Programming
Line 4: ## VBScript Programming
Line 5: Thi## i## VBScript Programming
Line 6: This is VBSc##ipt P##og##amming
Line 7: This is VBScrip## Programming

Возвращает строку после замены строки другой строкой.

Space

Функция Space заполняет строку конкретным количеством пробелов.

Синтаксис

Параметр Описание

Номер — требуемый параметр. Количество пробелов, которые мы хотим добавить к данной строке.

пример

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Заполняет строку указанным количеством пробелов.

StrComp

Функция StrComp возвращает целочисленное значение после сравнения двух заданных строк. Он может возвращать любое из трех значений -1, 0 или 1 на основе входных строк для сравнения.

  • Если String1 меньше String2, то StrComp возвращает -1
  • Если String1 равно String2, то StrComp возвращает 0
  • Если String1 больше String2, то StrComp возвращает 1

Синтаксис

Параметр Описание

  • String1 — требуемый параметр. Первое строковое выражение.
  • String2 — требуемый параметр. Второе строковое выражение.
  • Compare — Необязательный параметр. Указывает сравнение строк.Он может принимать следующие значения.
  • 0 = vbBinaryCompare — выполняет двоичное сравнение (по умолчанию)
  • 1 = vbTextCompare — выполняет сравнение текста

пример

Добавьте кнопку и добавьте следующую функцию.

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Читать еще:  Access sql синтаксис

Line 1 :0
Line 2 :1
Line 3 :1
Line 4 :0
Line 5 :1

Возвращает целочисленное значение после сравнения двух указанных строк.

String

Функция String заполняет строку указанным символом для указанного количества раз.

Синтаксис

Параметр Описание

  • Номер — требуемый параметр. Целочисленное значение, которое будет повторяться в течение определенного количества раз против параметра символа.
  • Символ — требуемый параметр. Значение символа, которое должно повторяться определенное количество раз.

пример

Добавьте кнопку и добавьте следующую функцию.

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1 :$$$
Line 2 :****
Line 3 :ddddd
Line 4 :AAAAAA

Возвращает строку с указанным символом для указанного количества раз.

StrReverse

Функция StrReverse меняет указанную строку.

Синтаксис

пример

Добавьте кнопку и добавьте следующую функцию.

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1 : TPIRCSBV
Line 2 : tpircSBV tsriF yM
Line 3 : 54.321

Возвращает строку после изменения последовательности символов данной строки.

Как заменить несколько символов в Access SQL?

Я новичок в SQL, так что, надеюсь, кто-нибудь сможет объяснить мне это. Я попытался следовать за «Replace Multiple Strings in SQL Query» сообщением, но застрял.

Я пытаюсь сделать то же самое, что и создатель вышеупомянутой публикации, но с другой таблицей и другими полями. Предположим, что следующее поле » ShiptoPlant «в таблице» BTST » имеет три записи (моя таблица на самом деле имеет тысячи записей).

Имя Таблицы: BTST

Вот что я пытаюсь ввести на экране SQL:

Я продолжаю получать сообщение (Ошибка 3075).

Я хочу сделать эту операцию для каждого символа на клавиатуре, за исключением «*» , так как это подстановочный знак.

Любая помощь, которую вы можете оказать, будет очень признательна!

EDIT: Справочная информация, добавленная из комментариев

Я собрал данные на уровне линейных счетов-фактур от каждого из наших 14 поставщиков за 2008 календарный год. Я пытаюсь нормализовать названия растений, которые дают нам наши поставщики.

Каждый поставщик может назвать завод другим именем например

Услуга Signode в нашем главном списке может быть вызвана поставщиками

Я пытаюсь удалить не буквенно-цифровые символы, чтобы попытаться идентифицировать растение с помощью нашего основного списка, создав серию ссылок, которые смотрят на первые 10 символов, если нет совпадения, 8 символов, 6, 4.

Моя основная проблема заключается в том, что я не знаю, как удалить буквенно-цифровые символы из таблицы. Я буду выполнять эту операцию с несколькими столбцами, но я планировал создать отдельные запросы для редактирования других столбцов.

Возможно, мне нужно сделать массовый запрос на обновление, который удаляет все буквенно-цифровые символы. Я до сих пор не знаю, как это написать. Вот с чего я начал, чтобы убрать все места. Это сработало отлично, но потерпело неудачу, когда я попытался вложить замену

EDIT 2: Дополнительная информация взята из комментариев

Каждый месяц до 100 новых перестановок названий наших заводов появляются в наших данных счета-фактуры линейного товара — это может представлять тысячи записей счетов-фактур. Я пытаюсь построить быстрый и грязный способ присвоения master_id окончательного имени каждой перестановке названия растения. Лучший способ, который я вижу, это посмотреть на поля завода, адреса, города и штата, но проблема в том, что эти поля также имеют различные перестановки, например,

Вынимая буквенно-цифровые знаки и делая

кроме того, изменяя количество символов до тех пор, пока не будет найдено соответствие между данными счета-фактуры и основным листингом завода (обе таблицы содержат поля завод, Адрес, город и штат), вы можете в конечном итоге найти соответствие. Конечно, когда вы начинаете уменьшать число символов, которые вы LEFT ing, точность становится под угрозой. Я сделал это в 44-м году и получил приличный доход. Может ли кто-нибудь порекомендовать лучшее решение?

9 Ответов

Возможно, вы захотите рассмотреть пользовательскую функцию (UDF)

Вы можете использовать встроенную функцию Replace в Access

Как уже говорили другие, в Access вы можете написать свои собственные функции в VBA и использовать их в своих запросах.

EDIT:

Вот способ обработки вложенного предела замены путем обертывания функции замены внутри нашей собственной функции. Он чувствует себя грязным , но он работает — поместите это в модуль в пределах доступа

Затем протестируйте его с помощью этого запроса

Возможно, вы захотите взять это и расширить его, чтобы вы могли передавать массив строк вместо жесткого кодирования их в функцию.

EDIT 2:

В ответ на дополнительную информацию, содержащуюся в комментариях к этому вопросу, вот предложение о том, как вы можете по-другому справиться с ситуацией. Преимущество этого приложения заключается в том, что после того, как вы сопоставили в перестановке названия растения, вам не нужно будет выполнять замену строки на будущие данные в будущие годы, а только добавлять новые названия растений и перестановки на карту.

Начните с создания другой таблицы, назовем ее plant_map

в поле plant_map добавьте все перестановки для названий растений и вставьте идентификатор для имени, которое вы хотите использовать для ссылки на определенную группу перестановок названий растений, в поле master_id. Из ваших комментариев я буду использовать сервис Signode

Теперь при запросе таблицы BTST можно получить данные для службы Signode с помощью

Данные в таблице BTST могут оставаться неизменными.

По сути, это соединение имени растения в BTST с именем в plant_map , а затем, используя master_id , самосоединение на id внутри plant_map , так что вам нужно только передать одно имя «common». Я бы посоветовал поставить индекс на каждый из столбцов name и master_id в plant_map , так как оба поля будут использоваться в соединениях.

Не думайте, что Access поддерживает оператор CASE. Рассмотрите возможность использования iif:

Для этого случая можно использовать функцию REPLACE:

Создайте общедоступную функцию в модуле кода.

Тогда в вашем запросе

Примечания-это будет медленно для большого количества записей — Если вы хотите, чтобы это было постоянно, то создайте запрос обновления, используя ту же функцию.

EDIT: чтобы сделать обновление:

Хорошо, ваш вопрос изменился, так что решение тоже будет. Вот два способа сделать это. Быстрый и грязный способ только частично решит вашу проблему, потому что он не сможет объяснить более странные перестановки, такие как пропущенные пробелы или неправильно написанные слова. Быстрый и грязный путь:

  1. Создайте новую таблицу — назовем ее так tChar.
  2. Поместите текстовое поле в нем — char (ы) вы хотите заменить — мы будем назовите его char для этого примера
  3. Поместите все char или char combinatios, которые вы хотите удалить, в эту таблицу.

Создайте и выполните следующий запрос. Обратите внимание, что он будет удалять только один пункт за раз, но вы также можете положить разные версии одного и того же замена в нем тоже вроде ‘ -‘ или — . Для этого примера я создал таблицу под названием tPlant с полем под названием ShipToPlant .

SELECT tPlant.ShipToPlant, Replace([ShipToPlant], (SELECT top 1 char FROM tChar WHERE instr(ShipToPlant,char)<>0 ORDER BY len(char) Desc),»» ) AS New FROM tPlant;

Лучший (но гораздо более сложный) способ. Это объяснение будет общим, потому что было бы почти невозможно поместить все это здесь. Если вы хотите связаться со мной напрямую, используйте мое имя Пользователя по адресу gmail.:

  1. Создать таблицу отборочных — ошибки, в которые люди попадают, как в воду канули вместо службы. Вот вы бы так и сделали введите все странные перестановки вы получить.
  2. Создайте таблицу с QualifierID и Завод ID. Вот вы бы сказали какие квалификатор идет к какому заводу.
  3. Создайте запрос, который соединяет эти два элемента а ваш стол с ошибочным растением имена в нем есть. Используйте instr так сказать что находится в поле.
  4. Создайте второй запрос, который усугубляет первое. Считайте, что поле instr и использовать его в качестве оценки. Запись с самым высоким баллом является завод.
  5. Вам придется вручную ввести те он не может найти, но довольно скоро это будет рядом ни с кем как у вас все больше и больше записей в таблице.

У тебя есть пара разных вариантов. В Access нет CASE в sql, вам нужно использовать IIF. Он не так элегантен, как решения в более надежных ядрах БД, и должен быть вложен в этот экземпляр, но он выполнит эту работу за вас.

Вы также можете сделать это с помощью sql, чтобы ограничить ваши данные.

Если вы знаете VB, вы также можете создать свои собственные функции и поместить их в queries. but, что является еще одним сообщением. 🙂 HTH

Все — я закончил вложением функции REPLACE() в два отдельных запроса. Поскольку мне нужно было заменить более 35 не буквенно-цифровых символов, а доступ ограничивает сложность запроса примерно 20 вложенными функциями, я просто разделил его на два процесса. Несколько неуклюже, но это сработало. В этом случае следовало бы следовать принципу KISS. Спасибо за вашу помощь!

Я знаю, что это действительно старый вопрос, но я наткнулся на него, когда искал решение этой проблемы, но в конечном итоге использовал другой подход.

Поле, которое я хочу обновить, называется ‘Customers’. В поле ‘CustName’ есть 20 с лишним акцентированных символов, для которых я хочу удалить диакритические знаки — так (например) ä > a.

Для каждого из этих символов я создал новую таблицу ‘recodes’ с 2 полями ‘char’ и ‘recode’. ‘char’ содержит символ, который я хочу удалить, а ‘recode’ содержит замену.

Затем для замены я сделал полное внешнее соединение внутри инструкции update

Это имеет тот же эффект, что и вложенность всех операторов replace, и намного проще в управлении.

Этот запрос захватывает 3 первых символа и заменяет их пробелами

Пример: BO-1234
Выход: 1234

Похожие вопросы:

В моем проекте иногда бывает так, что пользователь вводит неанглийские символы в столбец name. Я хочу найти несколько таблиц в моей базе данных для неанглийских символов и удалить их или заменить на.

Каков самый быстрый способ заменить несколько символов сразу в emacs? Например, я хотел бы действовать в этом регионе и заменить 1 на a, 2 на b, . 9 с i.

Как заменить несколько символов в строке kotlin? Как функция java replaceAll(). str.replaceAll([$,.], ) //java code Я знаю этот ответ так близко, но хочу изменить более одного символа одновременно

как заменить несколько символов в строке? помогите пожалуйста исправить скрипт Мне нужно, чтобы в строке name специальные символы были заменены фразой special char newName = replace(name, [», ‘/’.

Это основано на аналогичном вопросе, Как заменить несколько символов в Access SQL? Я написал это, так как sql server 2005, похоже, имеет ограничение на функцию replace() до 19 замен внутри.

Я пытаюсь заменить несколько символов в одной строке, но символ C не изменится на G, rest работает просто отлично. String.prototype.allReplace = function(obj) < var retStr = this; for (var x in obj).

Я посмотрел обсуждение в SO со ссылкой ниже : Заменить несколько символов в SQL То, что я не в состоянии понять, почему запрос не работает : select table_value, replace(replace(replace(table_value.

Мне нужно заменить несколько символов в строке. Результат не может содержать никаких & или запятых. В настоящее время у меня есть: REPLACE(T2.[ShipToCode],’&’,’and’) Но как же вы помещаете.

Я пытаюсь преобразовать части кода, которые Xcode не удалось преобразовать в Swift3 В swift 2.3 для замены нескольких символов в строке я использовал : var phone = + 1 (408)-456-1234 phone =.

Строковые функции SQL – примеры использования

Мы продолжаем изучение языка запросов SQL, и сегодня мы с Вами будем разговаривать о строковых функциях SQL. Мы рассмотрим основные и часто используемые строковые функции, такие как: LOWER, LTRIM, REPLACE и другие, все рассматривать мы будем, конечно же, на примерах.

В прошлой статье «Основы языка запросов SQL – оператор SELECT» мы с Вами узнали, что такое вообще SQL, а также рассмотрели основы оператора SELECT (условия отбора, агрегатные функции), здесь же мы продолжаем изучение оператора SELECT, а если говорить конкретней, то будем рассматривать строковые функции SQL.

Строковые функции используются для возвращения уже отредактированного значения. Другими словами, например, у Вас в колонке все значения состоят более чем из 20 символов, а Вам нужно возвратить всего первые 5 символов, это можно сделать с помощью так называемых строковых функциях.

Теперь перейдем непосредственно к самим функциям. Здесь я рассматриваю только часто используемые в работе или просто полезные строковые функции.

Функция CONCAT

Начнем с функции CONCAT – она используется для объединения значений двух столбцов в один. Допустим у Вас в таблице, «Имя» и «Фамилия» находятся в разных колонках (что логично), а Вам, для какого-нибудь отчета, нужно чтобы они выводились в одной колонке. Вы можете легко использовать данную функцию.

С помощью данного запроса Вы объедините две колонки в одну, т.е. у Вас получится не вот так

Аналогично этому запросу можно использовать следующую конструкцию (применимо в PostgreSQL).

Или чтобы отделить пробелом введите

т.е. две вертикальные черты объединяют два столбца в один, а чтобы отделить их пробелом я поставил между ними пробел (можно использовать любой символ, например тире или двоеточие) в апострофах и объединил также двумя вертикальными чертами (в Transact-SQL вместо двух вертикальных черточек используется знак +).

Функция INITCAP

Дальше идет также очень полезная функция, INITCAP – которая возвращает значение в строке, в которой каждое слово начинается с заглавной буквы, а продолжается маленькими. Это нужно для того, если у Вас в той или иной колонке не соблюдают правила заполнения и для того чтобы вывести все это дело в красивом виде можно использовать данную функцию, например, у Вас в таблице записи в колонке name следующего вида: ИВАН иванов или петр петров, Вы применяете данную функцию.

И у Вас получится вот так.

Функция LOWER

Следующая функция также может пригодиться. LOWER – возвращает в значение все слова с маленькой буквы. Используем пример выше, но только будем пользоваться следующий функцией.

А теперь получится вот так.

Функция UPPER

Похожая функция, только возвращает все символы с заглавной буквы, это UPPER.

Функция LPAD

Далее идет функция LPAD — она пригодится Вам, если Вам необходимо дополнить слева некими символами, до определенного количества знаков. Допустим, Вам необходимо, чтобы длина поля «Имя» была 20 знаков, и если длина имени меньше (например, «Иван» явно меньше 20 знаков), то будет происходить дополнение слева специальным символом (для примера используем тире).

  • name – название колонки;
  • 20 – количество знаков (длина поля);
  • ‘-‘ – символ, которым нужно дополнить до необходимого количества знаков.

Функция RPAD

Сразу рассмотрим обратную функцию. RPAD – действие и синтаксис тот же что и у LPAD, только дополняются символы справа (в LPAD слева).

Функция LTRIM

Далее идет тоже в некоторых случаях полезная функция, LTRIM – эта функция удаляет крайние левые символы, которые Вы укажите. Например, у Вас в базе есть колонка «город», в которой город указан в виде «г.Москва», а также есть города которые указанны в виде просто «Москва». Но Вам нужно вывести отчет только в виде «Москва» без «г.», но как это сделать, если есть и такие и такие? Вы просто указываете своего рода шаблон «г.» и если крайние левые символы начинаются с «г.», то эти символы просто не будут выводиться.

Данная функция просматривает символы слева, если символов по шаблону нет в начале строки, то она возвращает исходное значение ячейки, а если есть, то удаляет их.

Функция RTRIM

Также давайте сразу рассмотрим обратную функцию. RTRIM – то же самое что и LTRIM только символы ищутся справа.

Примечание! В Transact-SQL функции RTRIM и LTRIM удаляют пробелы справа и слева соответственно.

Функция REPLACE

Теперь рассмотрим такую интересную функцию как REPLACE – она возвращает строку, в которой все совпадения символов, заменяются на Ваши символы, которые Вы укажите. Для чего ее можно использовать, например, у Вас в базе есть колонки, в которых встречаются некие разделительные символы, допустим «/». Например, Иван/Иванов, а Вам хотелось бы вывести Иван-Иванов, то напишите

и у Вас произойдет замена символов.

Данная функция заменяет только полное совпадение символов, если например Вы укажите «—» т.е. три тире она и будет искать только три тире, а каждое отдельное тире заменять не будет, в отличие от следующей функции.

Функция TRANSLATE

TRANSLATE – строковая функция, которая заменяет все символы в строке, на те символы, которые Вы укажите. Исходя из названия функции, можно догадаться, что это полный перевод строки. Отличие данной функции от REPLACE в том, что она заменяет каждый символ, который Вы укажите, т.е. у Вас есть три символа, допустим абв и с помощью TRANSLATE Вы его можете заменить на abc таким образом у Вас а=a, б=b, в=c и по такому принципу будут заменяться все совпадения символов. А если Вы заменяли с помощью REPLACE, то у Вас искалось только полное совпадение символов абв расположенных подряд.

Функция SUBSTR

SUBSTR – данная функция, возвращает только тот диапазон символов, который Вы укажите. Другими словами, допустим, строка из 10 символов, а Вам все десять не нужны, а допустим, нужны только 3-8 (с третьего по восьмой). С помощью данной функции Вы легко можете это сделать. Например, у Вас в базе есть какой-нибудь идентификатор, фиксированной длинны (типа: AA-BB-55-66-CC) и каждая комбинация символов что-то означает. И в один прекрасный момент Вам сказали вывести только 2 и 3 комбинацию символов, для этого вы пишите запрос следующего вида.

т.е. мы выводим все символы, начиная с 4 и заканчивая 8, и после этого запроса у Вас выведется вот это:

BB-55

Функция LENGTH – длина строки

Следующая функция также может пригодиться, это LENGTH – которая просто на всего считает количество символов в строке. Например, Вам нужно узнать, сколько символов в каждой ячейки столбца допустим «name», таблица следующего вида.

Ссылка на основную публикацию
Adblock
detector