2009-11-12 65 views
0

我想在SELECT语句中加入一些属性视作一个例如如何在sql select语句中连接属性?

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

这不起作用,怎么办呢? 我正在使用postgreSQL。

+2

你试过了吗?它有用吗?问题是什么? – 2009-11-12 17:18:49

+1

这是什么问题?当你尝试上述时会发生什么?你使用什么数据库服务器? – Joe 2009-11-12 17:19:14

回答

4

Postgres使用||concatenate strings;您的查询必须是:

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

这应该只是一个全键盘上的回车键上方的关键,但在我的它不是一个卖线 - 有一个在它的中间休息。你必须按住Shift键来获取角色(称为管道,btw)。

2

如果你使用MySQL的甲骨文然后尝试CONCAT功能:

SELECT id, CONCAT(name, ' ', surname, ' ', age) as info FROM users 
+0

这也适用于oracle。 – 2009-11-12 17:23:08

2

这完全可能是依赖于数据库的我会看看为你的数据库连接函数运行选择。

例子。 Mysql:CONCAT(姓名,年龄)。

1

这应该是原样,但一般情况下,最好不要做太多的串接SQL方面,如果你能帮助它;而是返回所有列并在另一端连接它们。

你正在使用什么数据类型?您可能需要将CAST/CONVERT纳入(n)varchar

+2

我不同意。我更喜欢在结果集内完成尽可能多的操作,而不是将代码添加到应用程序中。 – 2009-11-12 17:21:27

+0

@Larry - 不是那种把你锁定在连接数据中的吗?如果我决定将事情列为姓氏,姓名(年龄),该怎么办?现在我不得不写一个新的查询/ sproc或解析字符串。对我来说,数据库主要用于数据存储和访问以及很少的数据操作。 – Nick 2009-11-12 17:29:52

+0

@Nick:是的,但另一种方法是您需要连接连接到数据库的每个代码库中的字符串。 – 2009-11-12 18:08:58

2

您可能需要在连接之前将字段强制转换为通用类型。例如,在T-SQL中可以读取。

Select id, Cast(name as varchar(50)) + ' ' + Cast(surname as varchar(50)) + ' ' + 
    Cast(age as varchar(3)) As info From Users 
2

||用于此目的。

使用它像 select name ||' '|| surname ||' '||年龄信息从用户

1

确保你的数据类型是相似的,并根据需要将任何数据类型转换为字符串:

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

相信ANSI标准连接运算符是:||

SELECT id, name ||' ' || surname || ' ' || age AS info FROM users 
+0

:)我正在写你的答案,而你已经发布了你的答案。你可以看到50秒的差异。 – 2009-11-12 17:23:38

+0

+1 cuz你是对的第一 – 2009-11-12 17:30:25

1

在我认识的大多数数据库中都能正常工作,但您可能必须将CAST年龄字段设置为TEXT。确切的做法取决于你使用的数据库,你没有指定。

+0

呃,这是另一个原因,为什么我喜欢甲骨文超过SQL Server - 隐式数据类型转换。 – 2009-11-12 18:10:15