【问题标题】:How to join attributes in sql select statement?如何在sql select语句中加入属性?
【发布时间】:2009-11-12 17:16:55
【问题描述】:

我想在 select 语句中加入几个属性作为一个例子

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

这不行,怎么办? 我正在使用 postgreSQL。

【问题讨论】:

  • 你试过了吗?它奏效了吗?有什么问题?
  • 有什么问题?当您尝试上述方法时会发生什么?您使用的是什么数据库服务器?

标签: sql postgresql


【解决方案1】:

Postgres 使用||concatenate strings;您的查询需要:

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

它应该是全键盘上 Enter 键上方的键,但在我的上它不是卖线 - 中间有一个中断。您必须按住 Shift 键才能获取字符(称为管道,顺便说一句)。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • :) 我正在写答案,而您已经发布了答案。您可以看到 50 秒的差异。
    【解决方案3】:

    这完全可能取决于数据库我会为您运行选择的数据库寻找连接函数。

    示例。 Mysql: CONCAT(name, surname, age).

    【讨论】:

      【解决方案4】:

      在连接之前,您可能需要将字段转换为通用类型。例如,在 T-SQL 中会这样写。

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

      【讨论】:

        【解决方案5】:

        ||用于此目的。

        像这样使用它 选择名称||' ' ||姓氏||' ' ||年龄作为来自用户的信息

        【讨论】:

          【解决方案6】:

          如果您使用的是 mysqloracle,请尝试CONCAT 函数:

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

          【讨论】:

            【解决方案7】:

            这应该可以正常工作,但一般情况下,如果你能提供帮助,最好不要做太多的连接 sql 端;而是返回所有列并将它们连接到另一端。

            您使用的数据类型是什么?您可能需要将CAST / CONVERT 转换为 (n)varchar

            【讨论】:

            • 我不同意。我更喜欢在结果集中进行尽可能多的操作,而不是向应用程序添加代码。
            • @Larry - 这不会将您锁定在连接数据中吗?如果我决定要将事物列为姓氏、姓名(年龄),该怎么办。现在我必须编写一个新的查询/存储过程或解析字符串。对我来说,数据库主要用于数据存储和访问,很少有数据操作。
            • @Nick:是的,但另一种方法是您需要连接每个连接到数据库的代码库中的字符串。
            【解决方案8】:

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

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

            【讨论】:

              【解决方案9】:

              在我知道的大多数数据库中都可以正常工作,尽管您可能必须将年龄字段转换为 TEXT。执行此操作的确切方法取决于您使用的数据库,但您没有指定。

              【讨论】:

              • 呃,这也是我喜欢 Oracle 胜过 SQL Server 的另一个原因 - 隐式数据类型转换。
              猜你喜欢
              • 2017-07-07
              • 2020-04-18
              • 1970-01-01
              • 2021-01-28
              • 1970-01-01
              • 2010-12-02
              • 2021-08-13
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多