Функция CONCAT |
|||||||||||||||||||||||||||||||||||||||||||||
Для конкатенации строк в Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL Server используется оператор "+". Т.е. если операнды являются числовыми, то выполняется операция сложения, а если – строковыми, то конкатенация:
Если же операнды являются значениями разных типов, то SQL Server выполняет неявное преобразование типов. Выполняя следующий запрос мы получим сообщение об ошибке:Error converting data type varchar to real.(Ошибка при преобразовании типа данных varchar к real.) Существует приоритет типов при их неявном преобразовании, и в соответствии с этим приоритетом сервер пытается преобразовать строку ' Gb' к типу данных столбца hd (real). Разумеется, явное преобразование типа решает проблему:
В SQL Server 2012 появилась функция CONCAT, которая выполняет конкатенацию, неявно преобразуя типы аргументов к строковому типу данных. С помощью этой функции предыдущий запрос можно переписать так: Еще одна полезная особенность функции CONCAT состоит в том, что NULL-значения неявно преобразуются в пустую строку- ''. Обычная же конкатенация с NULL-значением дает NULL. Вот пример, который это демонстрирует.
Следует отметить, что у функции CONCAT может быть произвольное число аргументов, но не менее двух.
MySQLВ MySQL также имеется функция CONCAT, вернее, даже две функции. Первая из них – CONCAT – возвращает NULL, если среди аргументов функции встречается NULL, вторая – CONCAT_WS – опускает аргумент, если его значение NULL. Кроме того, эта функция первым аргументом имеет разделитель, используемый при конкатенации.
OracleВ Oracle функция CONCAT имеет только два аргумента, поэтому запрос
Это, конечно, делает ее менее удобной по сравнению со стандартным способом. Обратите внимание, что при конкатенации чисел выполняется неявное преобразование к символьному типу данных:
При этом оба метода игнорируют NULL-значения:
PostgreSQLФункция CONCAT в PostgreSQL работает так же, как и в SQL Server. Заметим, что запрос, который работает в Oracle
Еще одним отличием от поведения в Oracle является конкатенация с NULL:
Рекомендуемые упражнения: 119 |