将varchar列与int列组合

Gab*_*abe 26 sql sql-server sql-server-2008

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

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

select fooId + ' ' + fooName as fooEntity
from mytable
Run Code Online (Sandbox Code Playgroud)

他们是不同的类型,所以我得到一个错误.

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

SQL Server 2008

(我是一个sql初学者)

OMG*_*ies 36

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

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

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

SELECT CAST(fooid AS VARCHAR(10)) + ' ' + fooname
Run Code Online (Sandbox Code Playgroud)

...因此您需要使用CAST(或CONVERT)将数据类型显式更改为基于文本的数据类型.

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

SELECT fooid || ' ' || fooname
Run Code Online (Sandbox Code Playgroud)

对于MySQL,您可以使用CONCAT功能:

SELECT CONCAT(fooid, ' ', fooname)
Run Code Online (Sandbox Code Playgroud)