将varchar列与int列组合

时间:2010-06-30 15:46:07

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

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

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

select fooId + ' ' + fooName as fooEntity
from mytable

他们是不同的类型所以我收到了错误。

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

SQL Server 2008

(我有点像sql初学者)

5 个答案:

答案 0 :(得分:35)

字符串连接在数据库之间是不同的,因此有助于知道哪个数据库,因为您需要知道:

  1. 连接方法/运算符
  2. 如果数据库处理隐式数据类型转换
  3. 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

答案 2 :(得分:0)

是的,只要绑定字段是字符串就可以了。

你得到的错误是什么?

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我在MS SQL中使用此查询

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

假设varcharColumn为空

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