我的存儲過程中有一個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 –