将nvarchar转换为数字

时间:2015-08-24 07:03:52

标签: sql-server sql-server-2012 type-conversion

我有一个名为@prmclientcode的变量,它是nvarchar。此变量的输入可以是单个客户端代码,也可以是以逗号分隔的多个客户端代码。对于例如

@prmclientcode='1'
or
@prmclientcode='1,2,3'.

我将此变量与表中的客户端代码列进行比较。此列的数据类型是数字(6,0)。我尝试转换下面的可变数据类型

SNCA_CLIENT_CODE IN ('''+convert(numeric(6,0),@prmclientcode+''')) (The query is inside a dynamic sql). 

但是当我尝试执行此操作时,我收到了错误

  

将nvarchar转换为数据类型numeric的算术溢出错误。

任何人都可以帮助我!

谢谢!

3 个答案:

答案 0 :(得分:0)

您需要将数字(6,0)列转换为nvarchar数据类型。在处理之前,您可以使用下面的脚本将其转换为nvarchar:

 SNCA_CLIENT_CODE IN ('''+convert(cast( numeric(6,0) as nvarchar(max) ),@prmclientcode+'''))

答案 1 :(得分:0)

请尝试使用以下代码段。

DECLARE @ProductTotals TABLE
(
  ProductID int
)

INSERT INTO @ProductTotals VALUES(1)
INSERT INTO @ProductTotals VALUES(11)
INSERT INTO @ProductTotals VALUES(3)

DECLARE @prmclientcode VARCHAR(MAX)='1'


SELECT * FROM @ProductTotals

SELECT * FROM @ProductTotals WHERE  CHARINDEX(',' + CAST(ProductID AS VARCHAR(MAX)) + ',' , ',' + ISNULL(@prmclientcode,ProductID) + ',') > 0

如果有任何疑虑,请告诉我。

答案 2 :(得分:-1)

使用可以使用表函数或动态sql查询,这两个选项都可以。

如果您需要更多帮助,请告诉我