CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

求一个自定义函数~~

楼主jianciwen(纯情房东)2004-12-04 16:52:10 在 MS-SQL Server / 基础类 提问

有一张表A,是关于物品的  
  字段为ID(物品编号),NAME(使用该物品的人)  
  就是说,一个物品可以被多个人使用。  
  我现在需要实现的功能是输入一个物品编号,显示所有使用该物品的人。而且要把这些人放在一个字段中。  
  如我用select   ID,NAME   from   A   where   ID=1111  
  结果显示为  
      id               name  
      1111           张三  
      1111           李四  
  我需要个函数  
  用select   ID,函数   as   names   from   A   where   ID=1111  
  把结果变为  
        ID             NAMES  
      1111       张三,李四  
  请问这个函数如何写?  
   
  问题点数:20、回复次数:13Top

1 楼lmj2003(雁不归)回复于 2004-12-04 16:56:53 得分 0

DECLARE   @NAME   VARCHAR(800)  
  SELECT   @NAME=@NAME+names   FROM  
  A   where   ID=1111  
   
   
  Top

2 楼lmj2003(雁不归)回复于 2004-12-04 16:57:49 得分 0

DECLARE   @NAME   VARCHAR(800)  
  SELECT   ID,@NAME=@NAME+names   FROM  
  A   where   ID=1111Top

3 楼jianciwen(纯情房东)回复于 2004-12-05 11:04:59 得分 0

不行啊~~~~Top

4 楼didoleo(冷月无声)回复于 2004-12-05 11:37:04 得分 5

大概是这样吧  
  create   function   f_str(  
  @id     int  
  )returns   varchar(8000)  
  as  
  begin  
  declare   @r   varchar(8000)  
  set   @r=''  
  select   @r=@r+','+rtrim(XQDW)  
  from   表   where   id   =@id    
  return(stuff(@r,1,1,''))  
  end  
  go  
   
  Top

5 楼jianciwen(纯情房东)回复于 2004-12-05 12:09:09 得分 0

请问XQDW什么意思?  
  我改成NAME后,他说“在TEXT属性的CREATE……语句中指定的名称必须与NAME属性匹配,而且后面必须跟有效的TSQL语句”Top

6 楼leihefeng(风)回复于 2004-12-05 12:36:19 得分 0

都不对Top

7 楼jianciwen(纯情房东)回复于 2004-12-05 12:46:28 得分 0

didoleo()   ,我把原来的删了,把你的重新复制一下后就可以了~~真奇怪,然后我改其他的东西,又出现上面那个错误。。。。。Top

8 楼gaojie0001(高洁)回复于 2004-12-05 12:55:22 得分 0

aaTop

9 楼yxiaowang(阿刀)回复于 2004-12-05 13:34:58 得分 5

CREATE   FUNCTION   [dbo].[test]   (@id   int)      
  RETURNS    
    varchar(500)  
    AS      
  BEGIN    
      declare   @string   varchar(500)  
      set   @string=''  
      select   @string=@string+name       from   A   where   ID=@id    
      return   @string  
  ENDTop

10 楼yxiaowang(阿刀)回复于 2004-12-05 13:35:56 得分 0

select   ID,test(id)   as   names   from   A   where   ID=1111  
  Top

11 楼didoleo(冷月无声)回复于 2004-12-05 18:59:59 得分 5

create   function   f_str(  
  @id     int  
  )returns   varchar(8000)  
  as  
  begin  
  declare   @r   varchar(8000)  
  set   @r=''  
  select   @r=@r+','+rtrim(name)  
  from   表   where   id   =@id    
  return(stuff(@r,1,1,''))  
  end  
  go  
  Top

12 楼zh_zh_y(决不放弃)回复于 2004-12-05 23:40:01 得分 0

呵呵,来晚了,   didoleo()   的方法应该可以。Top

13 楼long0104()回复于 2004-12-06 10:46:48 得分 5

这样可以  
  create   function   f_str(  
  @id     int  
  )returns   varchar(8000)  
  as  
  begin  
  declare   @r   varchar(8000)  
  set   @r=''  
  select   @r=@r+','+names  
  from   a   where   id   =@id    
  return(stuff(@r,1,1,''))  
  end  
  go  
   
  select   id,dbo.f_str(id)   from   a   where   id=1   group   by   idTop

相关问题

  • 自定义函数
  • 自定义函数
  • 自定义函数
  • 自定义函数
  • 怎么自定义函数???????
  • 求自定义函数
  • \关于自定义函数?
  • 关于自定义函数
  • 如何在MSSQL 7.0自定义函数?
  • 如何使用自定义函数??

关键词

  • 函数
  • 物品
  • asbegindeclare
  • varchar
  • stuff
  • where
  • 使用
  • declare
  • create function
  • str

得分解答快速导航

  • 帖主:jianciwen
  • didoleo
  • yxiaowang
  • didoleo
  • long0104

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo