Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Справочник по языку MySQL /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Структура языка - Программирование от RIN.RU
Структура языка




Литералы: представление строк и чисел


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


Cтроки


Строка представляет собой последовательность символов, заключенных либо в одинарные кавычки ("'") - апострофы, либо в двойные кавычки (" " "). При использовании диалекта ANSI SQL допустимы только одинарные кавычки.
Например:


'a string'
"another string"


Внутри строки некоторые последовательности символов имеют специальное назначение. Каждая из этих последовательностей начинается обратным слешем ('\'), известным как escape-символ или символ перехода. MySQL распознает
следующие escape-последовательности:


\0

Символ 0 (NUL) в ASCII коде.

\'

Символ одиночной кавычки (''').

\"

Символ двойной кавычки ('"').

\b

Возврат на один символ.

\n

Символ новой строки (перевода строки).

\r

Символ перевода каретки.

\t

Символ табуляции.

\z

Символ (Control-Z) таблицы ASCII(26). Данный символ можно закодировать, чтобы обойти проблему, заключающуюся в том, что под Windows ASCII(26) означает конец файла (проблемы возникают при использовании ASCII(26) в выражении mysql database < filename).

\\

Символ обратного слеша.

\%

Символ процентов '%'. Используется для поиска копий литерала '%' в контекстах, где выражение '%' в противном случае интерпретировалось бы как групповой символ (см. раздел Функции сравнения строк).

\'_'

Символ подчеркивания '_'. Используется для поиска копий литерала '_' в контекстах, где выражение '_' в противном случае интерпретировалось бы как групповой символ (см. раздел Функции сравнения строк).


Обратите внимание на то, что при использовании '\%' или '\_' в контекстах
некоторых строк будут возвращаться значения строк '\%' и '\_', а не '%' и
'_'.


Существует несколько способов включить кавычки в строку:


  • Одиночная кавычка (апостроф) ''' внутри строки, заключенной в кавычки ' ' ', может быть записана как ' '' '.

  • Двойная кавычка ' " ' внутри строки, заключенной в двойные кавычки ' " ', может быть записана как ' "" '.

  • Можно предварить символ кавычки символом экранирования ('\').

  • Для символа ' ' ' внутри строки, заключенной в двойные кавычки, не требуется специальной обработки; его также не требуется дублировать или предварять обратным слешем. Точно так же не требует специальной обработки двойная кавычка '"' внутри строки, заключенной в одиночные кавычки ' ' '.


Ниже показаны возможные варианты применения кавычек и escape-символа на
примерах выполнения команды SELECT:


mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';


+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+


mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
+-------+---------+-----------+--------+--------+
| hello | 'hello' | ''hello'' | hel"lo | "hello |
+-------+---------+-----------+--------+--------+


mysql> SELECT "This\nIs\nFour\nlines";


+--------------------+
| This
Is
Four
lines |
+--------------------+


Если необходимо вставить в строку двоичные данные (такие как BLOB), следующие символы должны быть представлены как escape-последовательности:


NUL

ASCII 0. Необходимо представлять в виде '\0' (обратный слеш и символ ASCII '0').

\

ASCII 92, обратный слеш. Представляется как '\\'.

'

ASCII 39, единичная кавычка. Представляется как '\''.

"

ASCII 34, двойная кавычка. Представляется как '\"'.


При написании программы на языке C для добавления символов экранирования в команде INSERT можно использовать функцию mysql_real_escape_string() из C API (см. раздел Обзор функций интерфейса C). При программировании на Perl
можно использовать метод quote из пакета DBI для превращения специальных символов в соответствующие escape-последовательности (см. раздел Интерфейс DBI).


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


В качестве альтернативы многие интерфейсы прикладного программирования (API) для MySQL предоставляют определенную возможность использования символов-заменителей, что позволяет вносить специальные маркеры в строку запроса и затем связывать с ними значения данных при выдаче результатов запроса.


Числа


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


Примеры допустимых целых чисел:


1221
0
-32


Примеры допустимых чисел с плавающей запятой:


294.42
-32032.6809e+10
148.00


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


Шестнадцатеричные величины


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


mysql> SELECT x'FF'
-> 255
mysql> SELECT 0xa+0;
-> 10
mysql> SELECT 0x5061756c;
-> Paul


Синтаксис выражений вида x'hexstring' (новшество в версии 4.0) базируется на ANSI SQL, а для обозначений вида 0x используется синтаксис ODBC. Шестнадцатеричные строки часто применяются в ODBC для представления двоичных типов данных вида BLOB. Для конвертирования строки или числа в шестнадцатеричный вид можно применять функцию HEX().


Значения NULL


Значение NULL означает "отсутствие данных". Они является отличным от значения 0 для числовых типов данных или пустой строки для строковых типов (см. раздел Проблемы со значением NULL).


При использовании форматов импорта или экспорта текстовых файлов (LOAD DATA INFILE, SELECT ... INTO OUTFILE) NULL можно представить как \N (см. раздел Синтаксис оператора LOAD DATA INFILE).


Вперед  >>>
 1  2  3  4 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Типы данных столбцов

Функции, используемые в операторах SELECT и WHERE (часть 1)

Функции, используемые в операторах SELECT и WHERE (часть 2)

Обработка данных: SELECT, INSERT, UPDATE, DELETE

Определение данных: CREATE, DROP, ALTER

Основные команды пользовательских программ MySQL

Команды управления транзакциями и блокировками в MySQL

Полнотекстовый поиск в MySQL

Кэш запросов в MySQL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь