2009年11月4日 星期三

tsql 多值的參數傳入stored procedure

在tsql中,如果單一條件要符合多個條件值時,都會以 in 的方式
select * from test where col1 in ( '1234','5678,'abcd')

如果這個多值的參數想要傳入做為stored proedure 的input parameter時,看來是不可行的
有二種方法:
1. 用charindex
select * from test where charindex ( col1 , '1234,5678,abcd') > 0

2.寫一個table function,
select * from test
where col1 in ( select valuString from dbo.zfnRtnStringTable ( '1234,5678,abcd' ) )

以下function來自一段不曉得在哪看過的script...,引用一下
CREATE FUNCTION dbo.zfnRtnStringTable ( @key varchar(8000))
RETURNS @rtnTable TABLE ( stringValue varchar(10))
AS
BEGIN
DECLARE @strValue varchar(10), @pos int
SET @key = @key+ ','
SET @pos= charindex(',', @key, 1)
IF replace(@key, ',', '') <> ''
BEGIN
WHILE @pos> 0
BEGIN
SET @strValue = left(@key, @pos- 1)
IF @strValue <> ''
BEGIN
insert into @rtnTable values( @strValue )
END
SET @key = right(@key, len(@key) - @pos)
SET @pos= charindex(',', @key, 1)
END
END
RETURN
END

沒有留言:

張貼留言

自動記錄滑鼠點選操作

為了一個需求,需要人工去點選幾個滑鼠的點選行為,找了幾種工具,覺得GS Auto Clicker最實用,極符合我的需求,尤其是多個固定位置的button點擊,解決了一個很耗時間的工作。 最後設定完預設hotkey F8為啟用鍵,就可以開始自動做工了。再按F8結束工作。 GS Au...