在 SQL 中连接 int 和 nvarchar 列
Posted
技术标签:
【中文标题】在 SQL 中连接 int 和 nvarchar 列【英文标题】:Concatenating int and nvarchar column in TSQL 【发布时间】:2012-11-15 11:55:56 【问题描述】:我正在使用 MSSQL EXPRESS 2008,我正在尝试使用以下查询将记录的 ID 列与其描述列连接起来
SELECT CAST(GotoviProizvodi.ID as nvarchar(4)) + ' - ' + CAST(GotoviProizvodi.Opis as nvarchar(max)) AS Opis
FROM GotoviProizvodi,Recept
WHERE Recept.ID=@ID
AND Recept.Proizvod=GotoviProizvodi.Opis
GotoviProizvodi.ID is defined in the schema as int -- the ID column
GotoviProizvodi.Opis is defined as nvarchar(200) -- the description column
但是,当我尝试执行查询时,它会产生以下结果:
消息 245,级别 16,状态 1,过程 GetProizvodByReceptId,第 2 行 将 nvarchar 值“Test”转换为数据类型 int 时转换失败。
当我明确告诉它将其转换为 nvarchar 时,它为什么要尝试将其转换为 int?有什么解决方法吗?
【问题讨论】:
join 上Recept.Proizvod
的数据类型是什么?
@ID
的数据类型是什么?
【参考方案1】:
您确定错误与演员阵容有关,而不是与 where 条件有关吗? 检查列类型是否匹配
【讨论】:
你是对的。应该是 Recept.Proizvod=GotoviProizvodi.ID。【参考方案2】:我认为这样就可以了:
SELECT (CONVERT(NVARCHAR, GotoviProizvodi.ID) + ' - ' + GotoviProizvodi.Opis) AS Opis
FROM GotoviProizvodi,Recept
WHERE Recept.ID=@ID
AND Recept.Proizvod=GotoviProizvodi.Opis
【讨论】:
以上是关于在 SQL 中连接 int 和 nvarchar 列的主要内容,如果未能解决你的问题,请参考以下文章
将 nvarchar 值转换为数据类型 int 和其他 SQL Server 错误时失败
具有 INT 和 NVARCHAR 数据类型的多列的 SQL Pivot [重复]
SQL Server 连接中的 nvarchar 或 varchar 或日期