SQL語句寫法問題,求教!

唐诗三百首 2009-10-10 07:58:42

以下SQL函數的功能是將"A,B,C,"的格式變換為"('A','B','C')"格式

select XXX.dbo.ECNFUN2('AI,PE,TE,') 執行結果為: ('AI','PE','TE')

但我在另1條SQL里這樣寫:

Select *
from XXX.dbo.ECNDEPT
where dept in (convert(char,XXX.dbo.ECNFUN2('AI,PE,TE,')))

就找不到資料了, 請為何? 應該怎么寫才對? 謝謝!!!
...全文
117 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bancxc 2009-10-12
  • 打赏
  • 举报
回复
執行結果為: ('AI','PE','TE')
函数出来的结果是 两边带括号吗

华夏小卒 2009-10-12
  • 打赏
  • 举报
回复


if object_id('tb') is not null drop table tb
go
create table tb(col varchar(3))
insert into tb select
'5' union select
'6' union select
'7'

declare @s varchar(10)
set @s='5,6'

exec('select * from tb where col in ('+@s+')')

col
----
5
6

(2 行受影响)

华夏小卒 2009-10-12
  • 打赏
  • 举报
回复
可以不用函数转换,直接用动态


declare @s ='AI,PE,TE'

exec('select * from XXX.dbo.ECNDEPT
where dept in ('+@s+')')
jenny0810 2009-10-12
  • 打赏
  • 举报
回复
关注
小宏 2009-10-12
  • 打赏
  • 举报
回复
用charindex试下吧
老七 2009-10-12
  • 打赏
  • 举报
回复
关注
唐诗三百首 2009-10-12
  • 打赏
  • 举报
回复
試過,還是不行.
唐诗三百首 2009-10-12
  • 打赏
  • 举报
回复
謝謝 js_szy 的指教! 但以上查詢語句只是大語句中的一部分 且IN('')的內容是程序中動態產生的, 因此沒辦法使用, 還請幫忙告知應該怎么寫? 謝謝!
唐诗三百首 2009-10-12
  • 打赏
  • 举报
回复
有帶括號 試過在函數中去掉括號 結果也一樣! 郁悶
百年树人 2009-10-10
  • 打赏
  • 举报
回复
declare @s varchar(50),@sql varchar(8000)
set @s='AI,PE,TE'
set @sql='Select * from XXX.dbo.ECNDEPT where dept in ('''+replace(@s,',',''',''')+''')'
exec (@sql)
SQL77 2009-10-10
  • 打赏
  • 举报
回复
Select * 
from XXX.dbo.ECNDEPT
where dept in (convert(VARCHAR(50),XXX.dbo.ECNFUN2('AI,PE,TE,')))
SQL77 2009-10-10
  • 打赏
  • 举报
回复
Select * 
from XXX.dbo.ECNDEPT
where dept in (convert(VACHAR(50),XXX.dbo.ECNFUN2('AI,PE,TE,')))

长度会默认,你给个
dawugui 2009-10-10
  • 打赏
  • 举报
回复
Select *
from XXX.dbo.ECNDEPT
where dept in (convert(varchar,XXX.dbo.ECNFUN2('AI,PE,TE,')))

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧