SET @strsql='select R.moduleid,username from Modules R
inner join(select moduleid,username=dbo.f_str(moduleid) from ModuleHost group by moduleid)T
on R.moduleid=1 and R.moduleid=T.moduleid'我想查询出moduleid=1的记录,有两个表Modules 和Modulehost,username这个字段在ModuleHost。问题是:如果username是空的话,查寻出的结果就是空的,我想得到结果是:
moduleid username
1 null
就是说即使username为空,结果也能查询出来,怎么办呢。-- 1. 创建处理函数
CREATE FUNCTION dbo.f_str(@moduleid int)
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re=''
SELECT @re=@re+','+username
FROM ModuleHost
WHERE moduleid=@moduleid
RETURN(STUFF(@re,1,1,''))
END
GO
解决方案 »
- sqlserver 2005 四舍五入的bug?
- 树型结构的显示
- 怎么得到每个存储过程最后更新的时间??
- 邹老大~ 咨询一个关于链接服务器的问题~~
- 用SQL SERVER怎样做与ACCESS一样的交叉表查询?
- 视图创建索引的问题,报错
- 请问如何在查询中加自动编号~~高手帮忙~我只有30分了,解决就给
- 为什么这样的执行不成功?like"[6-13]__"
- 在VFP中,当使用Use mydata.dbf shared打开数据库,我如何可以删除记录?
- 执行拼接的sql语句提示must declare variable
- 关于读取链接服务器中表的问题
- SQL server2005 触发器 异常处理 无法理解的现象
from (select moduleid,username from ModuleHost where moduleid=1这样查询,username为空的话,结果集也为空,如何在usernam=null的时候能查出结果
moduleid=1
username=null
select R.moduleid,username from Modules R
inner join(select moduleid,username=dbo.f_str(moduleid) from ModuleHost group by moduleid)T
on R.moduleid=1 and (R.moduleid=T.moduleid)or username is null'或者使用右连接也可以实现同样的效果;
SET @strsql='select R.moduleid,M.username
from Modules R left join ModuleHost M on R.moduleid = M.moduleid
where moduleid=1