如何实现这样的一个SQL

oceanming 2008-12-18 12:34:30
有一个表tb_dic_bookclass:
代码 名称
001  历史
002  文学
003  数学
004  地理
005  英语

假如有一个变量值是@str='001,003,005',想通过这个变量从表tb_dic_bookclass得到相对应的名称(历史,数学,英语),有什么最简单最直接的方法?
...全文
72 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
DongloveRen 2009-01-04
  • 打赏
  • 举报
回复
学习!
liyan93834183 2009-01-03
  • 打赏
  • 举报
回复
没有什么太好的办法啊
cassie_2008 2009-01-02
  • 打赏
  • 举报
回复
DECLARE @tb_dic_bookclass TABLE ( Id VARCHAR(5), Name VARCHAR(20))
DECLARE @InputStr VARCHAR(50), @OutputStr VARCHAR(200)
INSERT INTO @tb_dic_bookclass
SELECT '001', '歷史'
UNION
SELECT '002', '文學'
UNION
SELECT '003', '數學'
UNION
SELECT '004', '地理'
UNION
SELECT '005', '英語'

SELECT @OutputStr =''
SELECT @OutputStr = @OutputStr+Name+', ' FROM @tb_dic_bookclass
WHERE CHARINDEX(ID , '001,002,003') >0


SELECT @OutputStr
Mr_Bean 2008-12-24
  • 打赏
  • 举报
回复
除了自定义函数或者编程实现似乎没有别的更直接的办法
oceanming 2008-12-24
  • 打赏
  • 举报
回复
请问有没有人能回答的吗?
oceanming 2008-12-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liyan93834183 的回复:]
用动态SQL

SQL code
SET SQL = 'SELECT 名称 FROM 表 WHERE 代码 IN ' || @STR;
EXECUTE SQL;
[/Quote]

execute sql 之后得到不是一个dataset么,难道还要自己写一个方法去遍历这个dataset得到最终想要到字符串?
王帆 2008-12-19
  • 打赏
  • 举报
回复
LS正解!
liyan93834183 2008-12-18
  • 打赏
  • 举报
回复
用动态SQL

SET SQL = 'SELECT 名称 FROM 表 WHERE 代码 IN ' || @STR;
EXECUTE SQL;

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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