请看如下语句:
declare @pwds varchar(255)
set @pwds=''
select @pwds=@pwds+','+fusername from s_Sysuser where fid<1000
select @pwds
一般数据库返回值如下:
,NONE,供应商组,生产单位组,招标组,物管组,采购员组,普通用户组,系统管理员组在某一数据库返回值如下(只返回最后一行值):
,系统管理员组考虑应该是有参数设置,但不知道是那个参数,请各位大神赐教~~~

解决方案 »

  1.   

    declare @pwds varchar(255) select @pwds=ISNULL(@pwds+',','')+fusername from s_Sysuser where fid<1000 select @pwds 
      

  2.   

    确认2个数据库执行 select fusername from s_Sysuser where fid<1000
    返回的行数和内容都一样吗,应该不一样吧.
      

  3.   


    declare @pwds varchar(255) 
    set @pwds='' 
    select @pwds=@pwds+','+fusername from s_Sysuser where fid<1000 
    SET @pwds=STUFF(@pwds,1,1,'') 
    select @pwds 
      

  4.   

    这里没有用到参数,返回的结果取决于
    表中有多少条符合条件的记录
    select fusername from s_Sysuser where fid<1000
      

  5.   

    不明你在讲神马?
    --------------
    这样?
    select stuff((select ','+fusername from s_Sysuser where fid<1000 for xml path('')),1,1,'')
      

  6.   


    注意看一下变量赋值这一段select @pwds=@pwds+','+

    select @pwds=
    区别
      

  7.   


    set nocount on
    -- ???
      

  8.   

    使用 set ROWCOUNT n 可以设置返回数据最前面n条数。
    0为全部,其他数字为指定数量。但是你是得到最后一条数据,不是最前面的,你的varchar 是不是倒着拼接,然后有什么order by ** desc的排序?
      

  9.   

    补充一下,ROWCOUNT 是全局变量,无论你在哪里运行的,对你以后的操作都有影响。
      

  10.   

    刚刚测试过:
    SET ROWCOUNT 1
    返回的结果是:,NONE 
    是第一行的结果,和出问题的数据库结果也不一样
      

  11.   

    select没加order by,返回的记录集的顺序,是不保证的
      

  12.   


    我提问用的这段没有加 Order By 但实际业务使用的是加了的,
    提问用的这段代码是我为了测试,仿照实际业务代码写出来的,所有语法是一样,只是没有加order by ,而且得到的结果也和实际业务代码是同样效果.所以应该不是 order by 的问题.
      

  13.   

    比对一下2个数据库的字符集是否一致, select name,collation_name from sys.databases
    两个s_Sysuser表的字段,索引,字符集是否一致, sp_mshelpcolumns s_Sysuser
     --> 结果里有个collation字段.
      

  14.   

    具体返回的是第一行还是最后一行,跟sql版本有关
      

  15.   

    你要返回最后一行,是不是只要找到条件fid<1000的fid的最大值就可以找出结果