Строковые
данные
129
Если требуется начать поиск не с первого символа целевой строки, не
обходимо использовать функцию
locate()
, аналогичную функции
po
sition()
за тем исключением, что допускает
третий необязательный
параметр, предназначенный для задания стартовой позиции поиска.
И еще функция
locate()
является собственной функцией производите
лей БД, тогда как
position()
– часть стандарта SQL:2003. Вот пример
запроса
позиции строки
'is'
, начинающего поиск с пятого символа
столбца
vchar_fld
:
mysql>
SELECT LOCATE('is', vchar_fld, 5)
> FROM string_tbl;
++
| LOCATE('is', vchar_fld, 5) |
++
| 13 |
++
1 row in set (0.02 sec)
В Oracle Database нет функции
position()
или
locate()
, но есть
функция
instr()
, которая воспроизводит функцию
position()
,
если
задано два аргумента, и функцию
locate()
, если задано три
аргумента. В SQL Server тоже нет функции
position()
или
lo
cate()
, но есть функция
charindx()
,
которая также принимает
два или три аргумента аналогично функции
instr()
Oracle.
Еще одна функция, принимающая строки в качестве аргументов и воз
вращающая числа, – функция сравнения строк
strcmp()
.
Strcmp()
, ко
торая реализована только в MySQL и не
имеет аналогов в Oracle Data
base или SQL Server. Она принимает в качестве аргументов две строки
и возвращает одно из следующих значений:
Чтобы проиллюстрировать работу этой функции, сначала покажем
с помощью запроса порядок сортировки пяти строк, а
затем проведем
сравнение строк с помощью функции
strcmp()
. Вот пять строк, кото
рые будут вставлены в таблицу
string_tbl
:
mysql>
Достарыңызбен бөлісу: