Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Ограничения для полнотекстового поиска




· Все параметры функции MATCH() должны быть столбцами одной и той же таблицы, т.е. частью одного и того же индекса FULLTEXT, за исключением работы MATCH() в режиме IN BOOLEAN MODE.

· Список столбцов в команде MATCH() должен точно соответствовать списку столбцов в определении индекса FULLTEXT для этой таблицы, за исключением работы данной функции MATCH() в режиме IN BOOLEAN MODE.

· Аргумент в выражении AGAINST() должен быть неизменяемой строкой.

 

select_expression может содержать следующие функции и операторы:

+ - * / Арифметические действия.
% Остаток от деления (как в C)
| & Битовые функции (используется 48 бит).
- С Смена знака числа.
<< Осуществляет побитовый левый сдвиг целочисленного значения.
>> Осуществляет побитовый правый сдвиг целочисленного значения.
BETWEEN(A,B,C) (A >= B) AND (A <= C).
BIT_COUNT() Количество бит.
ELT(N,a,b,c,d) Возвращает a, если N == 1, b, если N == 2 и т. д. a, b, c, d строки. ELT(3, “First”, “Second”, “Third”, “Fourth”) вернет “Third”.
FIELD(Z,a,b,c) Возвращает a, если Z == a, b, если Z == b и т. д. a, b, c, d строки. FIELD(“Second”, “First”, “Second”, “Third”, “Fourth”) вернет “Second”.
IF(A,B,C) Если A истина (!= 0 and!= NULL), то вернет B, иначе вернет C.
IFNULL(A,B) Если A не null, вернет A, иначе вернет B.
ISNULL(A) Вернет 1, если A == NULL, иначе вернет 0. Эквивалент ('A == NULL').
NOT! NOT, вернет TRUE (1) или FALSE (0).
OR, AND Вернет TRUE (1) или FALSE (0).
SIGN() Вернет -1, 0 или 1 (знак аргумента).
expr LIKE expr Вернет TRUE (1) или FALSE (0).
expr NOT LIKE expr Вернет TRUE (1) или FALSE (0).
expr REGEXP expr Проверяет строку на соответствие регулярному выражению expr.
expr NOT REGEXP expr Проверяет строку на соответствие регулярному выражению expr.

select_expression может также содержать математические функции.

ABS() Абсолютное значение (модуль числа).
EXP() Экспонента.
FORMAT(nr,NUM) Форматирует число в формат '#,###,###.##' с NUM десятичных цифр.
LOG() Логарифм.
MOD() Остаток от деления (аналог %).
POW() Степень.
ROUND() Округление до ближайшего целого числа.
RAND([integer_expr]) Случайное число типа float, 0 <= x <= 1.0, используется integer_expr как значение для запуска генератора.
SQRT() Квадратный корень.

 

select_expression может также содержать одну или больше следующих строковых функций.

CONCAT() Объединение строк.
INTERVAL(A,a,b,c,d) Возвращает 1, если A == a, 2, если A == b... Если совпадений нет, вернет 0. A,a,b,c,d... строки.
INSERT(org,strt,len,new) Заменяет подстроку org[strt...len(gth)] на new. Первая позиция строки=1.
LCASE(A) Приводит A к нижнему регистру.
LEFT() Возвращает строку символов, отсчитывая слева.
LENGTH() Длина строки.
LOCATE(A,B) Позиция подстроки B в строке A.
LOCATE(A,B,C) Позиция подстроки B в строке A, начиная с позиции C.
LTRIM(str) Удаляет все начальные пробелы из строки str.
REPLACE(A,B,C) Заменяет все подстроки B в строке A на подстроку C.
RIGHT() Get string counting from right.
RTRIM(str) Удаляет хвостовые пробелы из строки str.
STRCMP() Возвращает 0, если строки одинаковые.
SUBSTRING(A,B,C) Возвращает подстроку из A, с позиции B до позиции C.
UCASE(A) Переводит A в верхний регистр.

Несколько просто полезных функций, которые тоже можно применить в select_expression.

CURRDATE() Текущая дата.
DATABASE() Имя текущей базы данных, из которой выполняется выбор.
FROM_DAYS() Меняет день на DATE.
NOW() Текущее время в форматах YYYYMMDDHHMMSS или “YYYY-MM-DD HH:MM:SS”.
PASSWORD() Шифрует строку.
PERIOD_ADD(P:N) Добавить N месяцев к периоду P (в формате YYMM).
PERIOD_DIFF(A,B) Возвращает месяцы между A и B. Обратите внимание, что PERIOD_DIFF работает только с датами в форме YYMM или YYYMM.
TO_DAYS() Меняет DATE (YYMMDD) на номер дня.
USER() Возвращает логин текущего пользователя.
WEEKDAY() Возвращает день недели (0 = понедельник, 1 = вторник,...).

Следующие функции могут быть использованы в предложении GROUP:

AVG() Среднее для группы GROUP.
SUM() Сумма элементов GROUP.
COUNT() Число элементов в GROUP.
MIN() Минимальный элемент в GROUP.
MAX() Максимальный элемент в GROUP.

Здесь MIN() и MAX() могут принимать строку или число в качестве аргумента. Эти функции не могут использоваться в выражении, хотя их параметр может быть выражением:

Пример: “SUM(value/10)” нормально, но вот “SUM(value)/10” уже нет!

Функции

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

COUNT(expr) Возвращает количество величин со значением, не равным NULL, в строках, полученных при помощи команды SELECT:

SELECT student.student_name,COUNT(*) FROM student,course

WHERE student.student_id=course.student_id GROUP BY student_name;

COUNT(*) оптимизирована для очень быстрого возврата результата при условии, что команда SELECT извлекает данные из одной таблицы, никакие другие столбцы не обрабатываются и функция не содержит выражения WHERE. Например SELECT COUNT(*) FROM student;

COUNT(DISTINCT expr,[expr...]) Возвращает количество различающихся величин со значением, не равным NULL: SELECT COUNT(DISTINCT results) FROM student;

AVG(expr) Возвращает среднее значение аргумента expr:

SELECT student_name, AVG(test_score) FROM student GROUP BY student_name;

MIN(expr), MAX(expr) Возвращает минимальную или максимальную величину аргумента expr. Функции MIN() и MAX() могут принимать строковый аргумент; в таких случаях они возвращают минимальную или максимальную строковую величину.

SELECT student_name, MIN(test_score), MAX(test_score) FROM student GROUP BY student_name;

SUM(expr) Возвращает сумму величин в аргументе expr. Обратите внимание: если возвращаемый набор данных не содержит ни одной строки, то функция возвращает NULL!

Например, SELECT order.custid,customer.name,MAX(payments) FROM order,customer WHERE order.custid = customer.custid GROUP BY order.custid;

value BETWEEN value1 AND value2 Выбирает записи, если value находится в диапазоне между valuel и value2 или равно одному из них.

value IN (valuel,value2,...) Выбирает записи, если value находится среди указанных значений.

value NOT IN (value1, value2,..,) Выбирает записи, если value не находится среди указанных значений.

valuel LIKE value2 Сравнивает value1 и value2 и выбирает записи, где они совпадают. Значение справа может содержать знак подстановки ' %', которому удовлетворяет любое число символов (включая 0) и знак '_', заменяющий ровно один символ. Чаще всего используется сравнение поля с некоторым символом и знаком подстановки (SELECT name FROM people WHERE name LIKE 'B%').

valuel NOT LIKE value2 Сравнивает valuel и value2 и выбирает записи, где они не совпадают. Команда идентична NOT (valuel LIKE value2).

valuel REGEXP/RLIKE value2 Сравнивает valuel и value2, используя расширенный синтаксис регулярных выражений, и выбирает записи, если они совпадают. Значение справа может содержать полные подстановочные выражения (SELECT name FROM people WHERE name RLIKE '^B. *').

valuel NOT REGEXP value2 Сравнивает valuel и value2, используя расширенный синтаксис регулярных выражений, и выбирает записи, если они не совпадают. Команда идентична NOT (valuel REXEXP value2). Предложение WHERE вернет все полученные в выражении значения, которые отличаются от 0 или NULL (т. е. все, что не является логически ложным). Поэтому SELECT age FROM people WHERE age>10 вернет только те записи, где возраст больше 10.


ПРИЛОЖЕНИЕ В

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...