我有一个名为@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的算术溢出错误。
任何人都可以帮助我!
谢谢!
答案 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查询,这两个选项都可以。
如果您需要更多帮助,请告诉我