Я хочу объединить несколько атрибутов в операторе выбора как один, например
select id, (name + ' ' + surname + ' ' + age) as info from users
это не работает, как это сделать? Я использую postgreSQL.
Postgres использует от || до объединенных строк ; Ваш запрос должен быть:
||
select id, (name || ' ' || surname || ' ' || age) as info from users
Это должна быть клавиша чуть выше клавиши Enter на полной клавиатуре, но по моему это не проданная строка - в середине ее разрыв. Вы должны удерживать клавишу Shift, чтобы получить персонажа (кстати, трубка).
Я считаю, что стандартный оператор конкатенации ANSI: ||
SELECT id, name ||' ' || surname || ' ' || age AS info FROM users
|| используется для этой цели.
Используйте это как выберите имя || ' '|| фамилия ||' '|| age как информация от пользователей
Вам может потребоваться привести поля к общему типу перед объединением. Например, в T-SQL это будет выглядеть так:
Select id, Cast(name as varchar(50)) + ' ' + Cast(surname as varchar(50)) + ' ' + Cast(age as varchar(3)) As info From Users
Это вполне может зависеть от базы данных. Я бы посмотрел на функцию конкатенации для базы данных, для которой вы запускаете команду select.
Пример. Mysql: CONCAT (имя, фамилия, возраст).
Если вы используете mysql или oracle , тогда попробуйте CONCAT function:
CONCAT
SELECT id, CONCAT(name, ' ', surname, ' ', age) as info FROM users
Прекрасно работает в большинстве баз данных, которые я знаю, хотя вам, вероятно, придется CAST поле age, чтобы быть TEXT. Точный способ сделать это зависит от базы данных, которую вы используете, которую вы не указали.
Убедитесь, что ваши типы данных похожи, и при необходимости преобразуйте все типы данных в строку:
select id, (name + ' ' + surname + ' ' + convert(varchar(3),age)) as info from users
Это должно работать как есть, но в целом лучше не делать слишком много конкатенации на стороне SQL, если вы можете помочь; верните все столбцы и соедините их на другом конце.
Какие типы данных вы используете? Вам может понадобиться CAST / CONVERT в (n) varchar
CAST
CONVERT