我的存储过程中有一个nvarchar(MAX),它包含int值列表,我这样做是因为无法将int列表传递给我的存储过程 , 但现在我得到问题,因为我的数据类型是int,我想比较字符串列表。 有没有办法可以做到这一点?在SQL中将字符串列表转换为Int列表
---myquerry----where status in (@statuslist)
但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//
)
AS SET FMTONLY OFF; DECLARE @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 ,@[email protected],@[email protected],@[email protected]
PRINT @sql
所以,当我实现了功能分割,然后我不能指定字符内或分隔符,因为它不接受它作为(@list, '')。
或(','+ @List +',')。
那么你可以写一个表值函数分裂整型值的字符串或你可能如果使用表值参数你正在使用SQL Server 2008+(不真的与他们合作,所以不确定他们是否100%适合这个目的) –
@尼尔:请详细说明一下,你能否为我提供一个相同的链接? –
这篇文章显示了我的意思:http://stackoverflow.com/questions/16040226/should-table-valued-parameters-be-used-here –