Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Gt; length(vchar_fld) varchar_length, _> length(text_fld) text_length

SELECT cust_id, fname, lname | Оператор except | SELECT emp_id | Правила операций с множествами | Старшинство операций с множествами | Gt; SELECT cust_id _> FROM account | Упражнения | Строковые данные | Создание строк | Специальные символы |


Читайте также:
  1. Aufrisszone ~~> Ort wo man mit hoher WahrscheinlichkeiteinenFreund / eine Freundin kennen lernen kann
  2. Burnen ~~> attraktiv. bewundernswert,cool
  3. Dönern~~> eine Blähung haben
  4. Faker ~~> Simulant
  5. Gesichtselfmeter ~~> unattraktives Gesicht
  6. Gt; FROM individual _> UNION ALL

_> FROM string_tbl;

 

+_____________+________________+_____________+ | char_length | varchar_length | text_length | +_____________+________________+_____________+

| 28 | 28 | 28 |

 

+_____________+________________+_____________+ 1 row in set (0.00 sec)

 

Длины столбцов varchar и text вполне ожидаемы, но предполагалось, что столбец char содержит строки длиной 30 символов, – я ведь говорил, что строки, хранящиеся в столбцах типа char, дополняются пробелами спра_ ва. Но сервер MySQL удаляет пробелы в конце строки при извлечении данных типа char, поэтому для всех строковых функций, независимо от типа столбца, хранящего строки, получены аналогичные результаты.

 

Кроме определения длины строки может потребоваться найти место_ положение подстроки в строке. Например, если надо определить, где в столбце vchar_fld располагается строка «characters», можно восполь_ зоваться функцией position() (положение), как показано ниже:

 

mysql> SELECT POSITION('characters' IN vchar_fld)

_> FROM string_tbl;

 

+_____________________________________+ | POSITION('characters' IN vchar_fld) | +_____________________________________+

| 19 |

 

+_____________________________________+ 1 row in set (0.12 sec)

Если не получается найти подстроку, функция position() возвращает 0.

 

Программисты на таких языках, как С или С++, в которых пер_ вый элемент массива имеет порядковый номер 0, при работе с базами данных должны помнить, что порядковый номер пер_ вого символа строки равен 1. Если функция position() возвраща_ ет значение 0, это указывает на то, что подстрока не найдена, а не на то, что подстрока обнаружена в строке на первой позиции.


 

Строковые данные  
   

 

Если требуется начать поиск не с первого символа целевой строки, не_ обходимо использовать функцию 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. Она принимает в качестве аргументов две строки и возвращает одно из следующих значений:

 

_1 если первая строка в порядке сортировки расположена до второй строки

0 если строки идентичны

 

1 если первая строка в порядке сортировки расположена после второй строки

 

Чтобы проиллюстрировать работу этой функции, сначала покажем с помощью запроса порядок сортировки пяти строк, а затем проведем сравнение строк с помощью функции strcmp(). Вот пять строк, кото_ рые будут вставлены в таблицу string_tbl:

 

mysql> DELETE FROM string_tbl;

 

Query OK, 1 row affected (0.00 sec)

 

mysql> INSERT INTO string_tbl(vchar_fld) VALUES ('abcd');

 

Query OK, 1 row affected (0.03 sec)

 

mysql> INSERT INTO string_tbl(vchar_fld) VALUES ('xyz');

 

Query OK, 1 row affected (0.00 sec)

 

mysql> INSERT INTO string_tbl(vchar_fld) VALUES ('QRSTUV');

 

Query OK, 1 row affected (0.00 sec)


 

130 Глава 7. Создание, преобразование и работа с данными

mysql> INSERT INTO string_tbl(vchar_fld) VALUES ('qrstuv');

 

Query OK, 1 row affected (0.00 sec)

 

mysql> INSERT INTO string_tbl(vchar_fld) VALUES ('12345');

 

Query OK, 1 row affected (0.00 sec)

Вот эти пять строк в порядке сортировки:

 

mysql> SELECT vchar_fld


Дата добавления: 2015-08-17; просмотров: 52 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Работа со строками| Gt; FROM string_tbl

mybiblioteka.su - 2015-2024 год. (0.007 сек.)