表值函數返回 table。
對於內嵌表值函數,沒有函數主體;
表是單個 SELECT 語句的結果集。對於多語句表值函數,在 BEGIN...END 塊中定義的函數主體包含 TRANSACT-SQL 語句,這些語句可生成行並將行插入將返回的表中。
先創建一個表值函數
-- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: in 參數化查詢 -- ============================================= CREATE FUNCTION [dbo].[Split] ( @SplitString varchar(max), @Separator char(1)=',' ) RETURNS @SplitStringsTable TABLE ( [value] varchar(max) ) AS BEGIN DECLARE @CurrentIndex int; DECLARE @NextIndex int; DECLARE @ReturnText nvarchar(max); SELECT @CurrentIndex=1; WHILE(@CurrentIndex<=len(@SplitString)) BEGIN SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex); IF(@NextIndex=0 OR @NextIndex IS NULL) SELECT @NextIndex=len(@SplitString)+1; SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex); INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText); SELECT @CurrentIndex=@NextIndex+1; END RETURN; END GO
然后調用它就可以了
select * from jn_user where userid in (SELECT value FROM Split(@idsrt))
關閉