Access функция replace
Access функция replace
Функции обработки строк
Asc преобразует символ в числовое значение.
Chr позволяет получить символ по значению его числового кода ANSI или Unicode.
Filter отбирает в выходной массив строки входного массива в соответствии с заданным образцом.
InStr служит для поиска номера символа, с которого начинается в заданной строке образец поиска.
InStrRev служит для поиска номера символа, с которого начинается в заданной строке образец поиска, поиск идет от указанной позиции справа налево .
Join служит для слияния всех элементов заданного массива в одну строку со вставкой между ними необязательного разделителя .
LCase преобразует символы строки в строчные; все буквы в нижнем регистре и небуквенные символы остаются неизмененными.
Left служит для усечения исходной строки до заданной длины.
Len вычисляет число символов в строке или размер заданной переменной.
LTrim удаляет пробелы в начале строки .
Mid используется для считывания заданного числа символов или байт подряд от заданной позиции в строке слева направо.
Partition служит для определения числовой оси, в который попадает заданное число.
Replace возвращает строку с замененным строковым фрагментом исходной строки.
Right служит для усечения справа исходной строки заданной длины.
RTrim удаляет пробелы в конце строки
Space используется для создания строки с указанным числом пробелов.
Spc используется вместе с инструкцией Print # или методом Print для установки позиции вывода для создания более красивого вида.
Split используется для расщепления строки на субстроки с использованием разделителя субстрок .
Str используется для приведения числового выражения типа Long в строку (тип String ) .
StrComp служит для сравнения двух строк.
StrConv служит для преобразования всех символов строки в соответствии с заданным видом преобразования.
String используется для создания строки из одинаковых символов .
StrReverse используется для построения заданной строки в обратном порядке .
Tab используется вместе с инструкцией Print # или методом Print для указания позиции вывода для создания более красивого вида.
Trim объединяет действия двух функций LTrim и RTrim, удаляя пробелы как справа, так и слева .
TypeName определяет тип данных переменной или свойства объекта
UCase преобразует символы строки в верхний регистр.
Val служит для преобразования аргумента в числовой тип данных.
Функция Asc
Функция Asc(ASCII code) преобразует символ в числовое значение
В результате действия функции возвращается
Asc — код ANSI первого символа строки типа Integer
AscB — первый байт строки, вне зависимости от кодировки
AscW — Unicode-код для первого символа строки, если система поддерживает Unicode. В остальных случаях аналогична Asc
Параметры String Обязательный аргумент может представлять любое строковое выражение. Если строка не содержит символов, возникает ошибка выполнения Пример
Функция Chr
Функция Chr(Character)позволяет получить символ по значению его числового кода ANSI или Unicode
Функции Chr, ChrB, ChrW возвращают значение субтипа String типа Variant , содержащее символ, соответствующий указанному коду символа ANSI или Unicode. Функции Chr$, ChrB$, ChrW$ возвращают соответственно значение типа String
Chr и Chr$ возвращают символ по его кодировке в стандарте ANSI
ChrB и ChrB$ возвращают однобайтовую строку
ChrW возвращает символ Unicode, однако в системах, не поддерживающих Unicode, ее поведение аналогично Chr
Использование в параметре CharCode значения больше, чем 255, генерирует ошибки стадии выполнения 5: Invalid procedure call or argument или 6: Overflow
Параметры CharCode Обязательный аргумент является значением типа Long , определяющим символ. Обычно, функция Chr применяется при вставке в текстовые строки непечатных символов(возврат каретки, перевод строки, табулятор и т.д.). Коды 0-31 соответствуют стандартным управляющим символам ASCII. Например, Chr(10) возвращает символ перевода строки Пример
Функция Filter
Новая функция, которая появилась в версии Visual Basic 6.0
Функция Filter отбирает в выходной массив строки входного массива в соответствии с заданным образцом(либо только содержащие вхождения заданного образца, либо только не содержащие)
Функция возвращает нулевой строковый массив, содержащий строки, отобранные из входного массива в соответствии с заданным образцом
Параметры SourceArray Обязательный аргумент — одномерный массив строк, в котором производится поиск Match Обязательный аргумент, содержащий поисковую строку-образец для отбора(фильтрации) Include Необязательный аргумент, содержащий булево значение( Boolean ) и указывающий, включают или не включают возвращаемые в качестве ответа строки поисковую строку-образец. Если значение Include равно True, значит возвращаемые подстроки содержат поисковую строку-образец; если False, то результат не содержит поисковую строку-образец Compare Необязательный аргумент — число, указывающее на используемый вид сравнения: vbUseCompareOption=-1 Используются установки, задаваемые оператором Option Compare. Используется по умолчанию vbBinaryCompare=0 Двоичное сравнение. Сравнение строк производится по внутренним кодам символов, определяемых кодовой страницей. Буквы разных регистров считаются разными vbTextCompare=1 Текстовое сравнение. Сравнение строк без учета регистра на основе системной национальной настройки vbDatabaseCompare=2 Сравнение на основе установок, принятых в обрабатываемой базе данных. Применяется в MS Access
Функция InStr
Функция InStr(In String) служит для поиска номера символа(номера байта для InStrB), с которого начинается в заданной строке образец поиска. Поиск идет от указанной позиции слева направо. Поиск вхождения одной строки в другую весьма часто используемая операция. Нумерация символов всегда начинается с единицы
В функции InStr при очень длинных строках при текстовом методе сравнения, возможно возникновение ошибки времени исполнения Stack overflow. Избежать этой ошибки можно, переведя исходную строку и образец в один регистр и перейдя на бинарное сравнение
Возвращает значение типа Variant(Long) , указывающее позицию первого появления одной строки внутри другой
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 передаваться готовый результат.
В общем, если интересно, с понедельника я на работе — перешли на почту образец таблицы с 10-15 стоками и образец запроса. Попробуем как-нибудь.
prOf7te
че то не представляю как написать в моем случае свою функция. т.е. не представляю как её выполнить в запросе?
. отправил тебе на почту примерчик на VB, в котором выдается эта ошибка.
Фдуч
А это не про то же?
Фдуч
Попробовал только что нарисовать свою функцию — VB тоже пишет «Not defined».
Похоже, у Access есть определенный список функций «на експорт» — и входят туда не все.
Или можно любую функцию так объявить — только я про такое не слышал.
Слушай, сохрони свою базу в формате 97 — у меня ж её открыть нечем.
Фдуч надо подумать как это к моему случаю применить. прочитать список функций поддерживаемых ЯДРОМ Jet понять что пользовательские функции туда никаким боком не входят опечалится и искать work around.
prOf7te Или можно любую функцию так объявить — AFAIK — нет
Когда забегем на базу Access с наружи в работает только Jet когда через Аccess то к игре подключается еще и Аccess VBA коей Jet-у подкидывает функций. Вот и все различия. (Можно ли Jet-у самому подкинуть функций не знаю не настолько специалист — если кто знает ответ сам бы с удовольствием послушал)
Access функция replace
UL>На самом акцессе такая конструкция работает! Может акцесс 2000 не поддерживает такую функцию? На акцесс ХР работает.
если запрос выполняется в среде Access — будет работать.
но в данном случае (если я правильно мысли протелепатил) речь идет о доступе к базе *.MDB из другого приложения через ADO: так вот — это работать не будет , ADO и Access это несколько разные вещи.
чтобы все работало через ADO надо почитать доки по движку Jet (это и в Access-овских доках есть) и тогда узнаешь, что и как работает в Jet.
а по сабжу: Replace() — это функция VBA среды и соответственно вне среды недоступна.
Здравствуйте, Аноним, Вы писали:
А>а по сабжу: Replace() — это функция VBA среды и соответственно вне среды недоступна.
И все же, Raplace() — это функция SQL (см. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_sa-ses_9sfo.asp)
Здравствуйте, C_M, Вы писали:
C_M>Здравствуйте, Аноним, Вы писали:
конечно сравнивать можно все
даже MSSQL и Access.
Replace() в вашем случае — это функция в языке Transact-SQL который используется в MSSQL и к Access-у никакого отношения не имеет(хотя в нем и есть функция с таким же именем и функционалом), а уж тем более к Jet
Здравствуйте, Callisto, Вы писали:
C>конечно сравнивать можно все
C>даже MSSQL и Access.
C>Replace() в вашем случае — это функция в языке Transact-SQL который используется в MSSQL и к Access-у никакого отношения не имеет(хотя в нем и есть функция с таким же именем и функционалом), а уж тем более к Jet
Я исходил из того, что UL просил помочь разобраться с запросом
А это, как мне кажется, именно SQL. И в теле оператора select SQL запроса действует только оператор SQL replace. Вроде так
Прошу прощения, если не прав.
Здравствуйте, UL, Вы писали:
UL>Использую ADO 2.6, Access
UL>такой запрос не работает:
[. ]
UL>Как быть?
Сохрани запрос как хранимку (если хошь, то без параметров можешь).
и вызывай через ADODB.Command или просто ‘EXECUTE ‘.
Здравствуйте, C_M, Вы писали:
C_M>А это, как мне кажется, именно SQL. И в теле оператора select SQL запроса действует только оператор SQL replace. Вроде так
C_M>Прошу прощения, если не прав.
Да, в данном случае, ты неправ, поверь. У Access-a это функция VBA.
Здравствуйте, ZAMUNDA, Вы писали:
ZAM>Сохрани запрос как хранимку (если хошь, то без параметров можешь).
Какая еще хранимка? Это же Access а не SQL-сервер.
Здравствуйте, Andrey F, Вы писали:
Здравствуйте, ZAMUNDA, Вы писали:
Здравствуйте, Andrey F, Вы писали:
AF>Да не будет работать Replace и в таком запросе при вызове из внешней программы.
Мда. тока что проверил — не работает даже на 2.8 версии. Приношу извинения.
AF>Это же не хранимая процедура.
Для ADODB это как раз хранимая процедура.
AF>Единственный способ выпольнить подобный запрос из другой программы — пользуясь объектной моделью Access-a, но тормоза будут при этом.
Ну всётаки должен быть какой-нить способ! Мож другое название функции дать?
AF>Так что проще модифицировать извлеченный Recordset уже на клиенте.
согласен.
AF>Или (что лучше, удобней и проще) съехать на MS SQL (можно Express версию, если хочется бесплатного).
Нет, так не лучше. Из-за одной функции переходить на другую систему, не вижу смысла. + MS SQL сам придостаточное количество багов имеет.
Как заменить несколько символов в 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 и получил приличный доход. Может ли кто-нибудь рекомендовать лучшее решение?
Строковые функции 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», таблица следующего вида.