【问题标题】: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】:
数据库之间的字符串连接是不同的,所以知道哪个数据库是有帮助的,因为你需要知道:
- 连接方法/运算符
- 如果数据库处理隐式数据类型转换
SQL Server 不会将数字隐式转换为字符串值:
SELECT CAST(fooid AS VARCHAR(10)) + ' ' + fooname
...所以您需要使用CAST (or CONVERT) 将数据类型显式更改为基于文本的数据类型。
对于 Oracle 和 PostgreSQL,使用双管道连接字符串:
SELECT fooid || ' ' || fooname
对于MySQL,您可以使用CONCAT function:
SELECT CONCAT(fooid, ' ', fooname)
【解决方案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】:
是的,应该没问题,只要绑定的字段是字符串。
你遇到了什么错误?