如何将 Nvarchar 列转换为 INT [英] How to convert Nvarchar column to INT

查看:133
本文介绍了如何将 Nvarchar 列转换为 INT的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的一张表中有一个 nvarchar 列.现在我需要将该列值转换为 INT 类型..

I have a nvarchar column in one of my tables. Now I need to convert that column values to INT type..

我试过使用

cast(A.my_NvarcharColumn as INT) 

convert (int, N'A.my_NvarcharColumn')

当我运行查询时,我收到类似

When I ran my query I am getting errors like

将 nvarchar 值23454542"转换为转换失败数据类型 int.

我正在发布我的整个代码片段

hi i am posting my entire code snippet

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 转换为整数而不是列内容.

CONVERT takes the column name, not a string containing the column name; your current expression tries to convert the string A.my_NvarcharColumn to an integer instead of the column content.

SELECT convert (int, N'A.my_NvarcharColumn') FROM A;

应该是

SELECT convert (int, A.my_NvarcharColumn) FROM A;

简单的 SQLfiddle 这里.

Simple SQLfiddle here.

这篇关于如何将 Nvarchar 列转换为 INT的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆