【问题标题】:Combine varchar column with int column将 varchar 列与 int 列合并
【发布时间】:2010-06-30 15:46:06
【问题描述】:

我在一个 SQL 表中有两列,fooId (int) 和 fooName (varchar)。

有没有办法将它们都选择为一列,它们之间有一个空格?

select fooId + ' ' + fooName as fooEntity
from mytable

它们是不同的类型,所以我遇到了错误。

此字段将直接在 Web 应用程序的控件中进行数据绑定。

SQL Server 2008

(我是个 sql 初学者)

【问题讨论】:

标签: sql sql-server sql-server-2008


【解决方案1】:

数据库之间的字符串连接是不同的,所以知道哪个数据库是有帮助的,因为你需要知道:

  1. 连接方法/运算符
  2. 如果数据库处理隐式数据类型转换

SQL Server 不会将数字隐式转换为字符串值:

SELECT CAST(fooid AS VARCHAR(10)) + ' ' + fooname

...所以您需要使用CAST (or CONVERT) 将数据类型显式更改为基于文本的数据类型。

对于 Oracle 和 PostgreSQL,使用双管道连接字符串:

SELECT fooid || ' ' || fooname

对于MySQL,您可以使用CONCAT function

SELECT CONCAT(fooid, ' ', fooname)

【讨论】:

  • 啊,这个比我的回答完整多了。 +1
【解决方案2】:

试试这个:

SELECT Convert( foold, SQL_CHAR ) + ' ' + fooName FROM mytable

SELECT Cast( foold AS SQL_CHAR(10) ) + ' ' + fooName FROM mytable

【讨论】:

    【解决方案3】:

    我不确定它是否是标准 SQL,但 PostgreSQL 使用 || 运算符进行字符串连接。 + 表示数字加法。

    【讨论】:

      【解决方案4】:

      我在 MS SQL 中使用这个查询

      SELECT varcharColumn + CONVERT(VARCHAR(2), intColumn) AS foo
      

      假设 varcharColumn 为空

      SELECT ISNULL(varcharColumn, '') + CONVERT(VARCHAR(2), intColumn) AS foo
      

      【讨论】:

        【解决方案5】:

        是的,应该没问题,只要绑定的字段是字符串。

        你遇到了什么错误?

        【讨论】:

        • 这可能是一条评论!
        猜你喜欢
        • 2018-04-22
        • 1970-01-01
        • 2010-10-31
        • 2018-12-31
        • 2023-03-03
        • 2013-12-08
        • 1970-01-01
        • 1970-01-01
        • 2022-09-26
        相关资源
        最近更新 更多