我的一个表中有一个nvarchar列.现在我需要将列值转换为INT类型..
我试过使用
cast(A.my_NvarcharColumn as INT)
和
convert (int,N'A.my_NvarcharColumn')
当我运行我的查询时,我收到错误
Conversion failed when converting the nvarchar value ‘ 23454542 ‘ to
data type int.
嗨,我发布我的整个代码片段
SELECT A.objID,name,des,right(Replace(Ltrim(Replace(substring(my_nvarcharcolumn,1,9),'0',' ')),' ','0'),10) AS new_nvarcharcolumn INTO #tmp1 FROM [database].[dbo].[tblname] AS A INNER JOIN (SELECT * FROM [database].[dbo].tblname1 WHERE sourceID = 32) AS AI ON source = A.objID INNER JOIN [database].[dbo].tblname2 AS I ON I.ObjectID = A.Source SELECT MAX(m_dAddDate) AS date_Asof,dnum INTO #tmp2 FROM (SELECT * FROM [database].[dbo].tblname WHERE senior <> '' AND class = 'SSS') AS A GROUP BY dnum SELECT DISTINCT A.* INTO #tmp3 FROM #tmp1 AS A INNER JOIN #tmp2 AS SD ON SD.dnum =cast(A.new_nvarcharcolumn as INT) INNER JOIN database.[dbo].tbl4 AS M ON M.dnum = cast(A.new_nvarcharcolumn as INT) AND SD.date_Asof = M.adddate
解决方法
CONVERT采用列名称,而不是包含列名称的字符串;您当前的表达式尝试将字符串A.my_NvarcharColumn转换为整数,而不是列内容.
SELECT convert (int,N'A.my_NvarcharColumn') FROM A;
应该是
SELECT convert (int,A.my_NvarcharColumn) FROM A;
简单的SQLfiddle here.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。