Как объединить атрибуты в SQL оператора выбора? - PullRequest
0 голосов
/ 12 ноября 2009

Я хочу объединить несколько атрибутов в операторе выбора как один, например

select id, (name + ' ' + surname + ' ' + age) as info from users

это не работает, как это сделать? Я использую postgreSQL.

Ответы [ 9 ]

4 голосов
/ 12 ноября 2009

Postgres использует от || до объединенных строк ; Ваш запрос должен быть:

select id, (name || ' ' || surname || ' ' || age) as info from users

Это должна быть клавиша чуть выше клавиши Enter на полной клавиатуре, но по моему это не проданная строка - в середине ее разрыв. Вы должны удерживать клавишу Shift, чтобы получить персонажа (кстати, трубка).

3 голосов
/ 12 ноября 2009

Я считаю, что стандартный оператор конкатенации ANSI: ||

SELECT id, name ||' ' || surname || ' ' || age  AS info FROM users
2 голосов
/ 12 ноября 2009

|| используется для этой цели.

Используйте это как выберите имя || ' '|| фамилия ||' '|| age как информация от пользователей

2 голосов
/ 12 ноября 2009

Вам может потребоваться привести поля к общему типу перед объединением. Например, в T-SQL это будет выглядеть так:

Select id, Cast(name as varchar(50)) + ' ' + Cast(surname as varchar(50)) + ' ' + 
     Cast(age as varchar(3)) As info From Users
2 голосов
/ 12 ноября 2009

Это вполне может зависеть от базы данных. Я бы посмотрел на функцию конкатенации для базы данных, для которой вы запускаете команду select.

Пример. Mysql: CONCAT (имя, фамилия, возраст).

2 голосов
/ 12 ноября 2009

Если вы используете mysql или oracle , тогда попробуйте CONCAT function:

SELECT id, CONCAT(name, ' ', surname, ' ', age) as info FROM users
1 голос
/ 12 ноября 2009

Прекрасно работает в большинстве баз данных, которые я знаю, хотя вам, вероятно, придется CAST поле age, чтобы быть TEXT. Точный способ сделать это зависит от базы данных, которую вы используете, которую вы не указали.

1 голос
/ 12 ноября 2009

Убедитесь, что ваши типы данных похожи, и при необходимости преобразуйте все типы данных в строку:

select id, (name + ' ' + surname + ' ' + convert(varchar(3),age)) as info from users
1 голос
/ 12 ноября 2009

Это должно работать как есть, но в целом лучше не делать слишком много конкатенации на стороне SQL, если вы можете помочь; верните все столбцы и соедините их на другом конце.

Какие типы данных вы используете? Вам может понадобиться CAST / CONVERT в (n) varchar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...