2013-02-22 121 views
2

輸入像111111101,102,103,104轉換遊標失敗存儲過程

我要檢查用戶是否對這個請求,或者不能上網......

我嘗試了光標如圖所示,但我得到這個錯誤:

Conversion failed when converting the varchar value '101,102,103,104' to data type int.

代碼:

​​

由於在dvance

+1

使用表值函數就像你不能自動地擴展到VARCHAR列表中的項目。 – muhmud 2013-02-22 12:31:55

回答

1

根據您的SQL服務器優化版本,你可以在這短短的例子

Select * from dbo.test1 
Where ID in(
Select * from dbo.F_SplitAsIntTable('1,123,234,456')) 

功能定義爲

CREATE FUNCTION F_SplitAsIntTable 
(
@txt varchar(max) 
) 
RETURNS 
@tab TABLE 
(
ID int 
) 
AS 
BEGIN 
    declare @i int 
    declare @s varchar(20) 
    Set @i = CHARINDEX(',',@txt) 
    While @i>1 
     begin 
      set @s = LEFT(@txt,@i-1) 
      insert into @tab (id) values (@s) 
      Set @txt=RIGHT(@txt,Len(@txt)[email protected]) 
      Set @i = CHARINDEX(',',@txt) 
     end 
    insert into @tab (id) values (@txt) 
    RETURN 
END 
GO 
+0

謝謝bummi ...我創建了一個函數和問題解決了...... :) – Rohit 2013-02-27 09:05:15