Функция CONCAT |
|||||||||||||||||||||||||||||||||||||||||||||
Для конкатенации строк в Т.е. если операнды являются числовыми, то выполняется операция сложения, а если – строковыми, то конкатенация:
Если же операнды являются значениями разных типов, то 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 |