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

Создание строк

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


Читайте также:
  1. A.1.2. Технология командной строки.
  2. Creating and using arrays Создание и использование массивов
  3. Creating constants Создание константы
  4. Creating loops in Swift Создание петель в Swift
  5. Creating optional variables Создание дополнительных переменных
  6. Defining and instantiating classes Определение и создание экземпляра классы
  7. IV. Создание сбалансированного портфеля

 

Самый простой способ заполнить символьный столбец – заключить строку в кавычки:

 

mysql> INSERT INTO string_tbl (char_fld, vchar_fld, text_fld)

 

_> VALUES ('This is char data', _> 'This is varchar data',

_> 'This is text data');

 

Query OK, 1 row affected (0.00 sec)

 

При вставке строковых данных в таблицу не забывайте, что если длина строки превышает максимальный размер символьного столбца (или за_ данный, или допустимый максимум типа данных), сервер или сформи_ рует исключение (Oracle Database), или, в случае MySQL или SQL Ser_ ver, без лишнего шума усечет строку (MySQL генерирует предупреж_ дение). Чтобы показать, как MySQL поведет себя в такой ситуации, сле_ дующее выражение update пытается обновить строкой из 46 символов столбец vchar_fld, для которого задан максимальный размер в 30 сим_ волов:

 

mysql> UPDATE string_tbl

_> SET vchar_fld = 'This is a piece of extremely long varchar data';


 

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

Query OK, 1 row affected, 1 warning (0.01 sec)

 

Rows matched: 1 Changed: 1 Warnings: 1

Столбец изменен, но сформировано следующее предупреждение:

 

mysql> SHOW WARNINGS; +_________+______+________________________________________________+ | Level | Code | Message | +_________+______+________________________________________________+ | Warning | 1265 | Data truncated for column 'vchar_fld' at row 1 | +_________+______+________________________________________________+ 1 row in set (0.00 sec)

Если извлечь столбец vchar_fld, то получим:

 

mysql> SELECT vchar_fld

_> FROM string_tbl;

 

+________________________________+ | vchar_fld | +________________________________+ | This is a piece of extremely l | +________________________________+ 1 row in set (0.05 sec)

 

Как видите, в столбце vchar_fld размещены только первые 30 символов 46_символьной строки. Лучший способ избежать усечения строки (или формирования исключений в случае Oracle Database) при работе со столбцами типа varchar – задавать достаточно большой верхний пре_ дел длины строки, чтобы иметь возможность работать с самыми длин_ ными из предполагаемых для хранения строк (помня о том, что сервер распределяет для хранения строки лишь необходимое количество па_ мяти, т. е. при задании большого верхнего предела для столбцов типа varchar память все же не расходуется впустую).

 

Одинарные кавычки (апострофы)

 

Поскольку строки разграничиваются одинарными кавычками, необ_ ходимо быть внимательными со строками, включающими одинарные кавычки (апострофы). Например, следующую строку вставить не по_ лучится, потому что сервер подумает, что апостроф в слове «doesn’t» обозначает конец строки:

 

UPDATE string_tbl

 

SET text_fld = 'This string doesn't work';

 

Чтобы заставить сервер «проигнорировать» апостроф в слове «doesn’t», понадобится добавить в строку знак экранирования символа (escape). Тогда сервер будет воспринимать апостроф как обычный символ стро_ ки. Все три сервера обеспечивают возможность сохранить апостроф; для этого надо ввести непосредственно перед апострофом еще один апостроф:

 

mysql> UPDATE string_tbl

_> SET text_fld = 'This string didn''t work, but it does now';


 

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

 

Query OK, 1 row affected (0.01 sec)

 

Rows matched: 1 Changed: 1 Warnings: 0

Пользователи Oracle Database и MySQL также могут сохранить одинарную кавычку, разместив прямо перед ней обратный слэш:

 

UPDATE string_tbl SET text_fld =

 

'This string didn\'t work, but it does now'

 

При извлечении строки для отображения на экране или в поле сообще_ ния ее внутренние кавычки не требуют какой_либо особой обработки:

 

mysql> SELECT text_fld

_> FROM string_tbl;

 

+__________________________________________+ | text_fld | +__________________________________________+ | This string didn't work, but it does now | +__________________________________________+ 1 row in set (0.00 sec)

 

Однако если строка извлекается для помещения в файл, предназначен_ ный для другой программы, возможно, вы захотите вставить в извле_ ченную строку знак экранирования символа. При работе с MySQL мож_ но использовать встроенную функцию quote() (кавычка), которая за_ ключает в кавычки всю строку и добавляет знаки экранирования сим_ вола к любой одинарной кавычке/апострофу, встречающейся в строке. Вот как выглядит строка, извлеченная с применением функции quote():

 

mysql> SELECT QUOTE(text_fld)

_> FROM string_tbl;

 

+_____________________________________________+ | QUOTE(text_fld) | +_____________________________________________+ | 'This string didn\'t work, but it does now' | +_____________________________________________+ 1 row in set (0.04 sec)

 

При извлечении данных с целью экспорта вы, возможно, захотите применить функцию quote() ко всем символьным столбцам, сформиро_ ванным не системой, таким как столбец customer_notes (примечания клиента).

 


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


<== предыдущая страница | следующая страница ==>
Строковые данные| Специальные символы

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