我的存储过程中有一个 nvarchar(MAX) 包含 int 值列表,我这样做是因为无法将 int 列表传递给我的存储过程,但是,现在我遇到了问题,因为我的数据类型是 int我想比较字符串列表。有没有办法让我做同样的事情?
---myquerry----where status in (@statuslist)
但是状态列表现在包含字符串值而不是 int,那么如何将它们转换为 INT?
更新:
USE [Database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP]
(
@FromDate datetime = 0,
@ToDate datetime = 0,
@ID int=0,
@List nvarchar(MAX) //This is the List which has string ids//
)
设置为 FMTONLY 关闭;声明 @sql nvarchar(MAX)、@paramlist nvarchar(MAX)
SET @sql = 'SELECT ------ and Code in(@xList)
and -------------'
SELECT @paramlist = '@xFromDate datetime,@xToDate datetime,@xId int,@xList nvarchar(MAX)'
EXEC sp_executesql @sql, @paramlist,
@xFromDate = @FromDate ,@xToDate=@ToDate,@xId=@ID,@xList=@List
PRINT @sql
因此,当我实现该拆分功能时,我无法指定字符或分隔符,因为它不接受它作为(@List,',')。
或(','+@List+',')。