日期:2014-05-19  浏览次数:20415 次

求一个SQL函数的写法(MSSQL区人太少了,只好发到这里),非常紧急
求一个SQL函数的实现,必须是函数,因为要在许多存储过程中用到,如下
有这样一锻SQL语句
Declare   @cmd   nvarchar(500)

set   @cmd   =   'Select   1   Where   '   +   Cast(@AuthorID   AS   nvarchar)   +   '   IN( '   +   @AuthorIDs   +   ') '

exec(@cmd)

请问,如何写函数才能将@cmd执行后的1作为函数的返回值输出呢,由于必须通过拼字符串实现,所以一筹莫展,本人对SQL中的函数并不是太了解,请各位大虾一定帮下忙

------解决方案--------------------
改用CharIndex做判斷,不使用In做判斷。


declare @bResult bit
Set @bResult = 0
Select @bResult = 1 Where CharIndex( ', ' + Cast(1 As Varchar) + ', ' , ', ' + '1,2,3 ' + ', ') > 0
------解决方案--------------------
你的語句改為這樣,

select * from table where CharIndex( ', ' + Cast(AuthorIDs As Varchar) + ', ' , ', ' + @AuthorID + ', ') > 0
------解决方案--------------------

在前後加上 ", "是為了防止將11這樣包含1的時候查出。

或者用Like也可以

select * from table where ', ' + @AuthorID + ', ' Like '%, ' + Cast(AuthorIDs As Varchar) + ',% '