当前位置:主页 > ag亚洲娱乐集团正文

ag亚洲娱乐集团:为SQL Server的文本字段实现类似quot求和quot的效果

05月07日作者:黑曼巴


在SQL Server里面,针对数字字段,我们可以用SUM函数求出多个值的总和。有的时刻,我们必要为文本值实现类似的效果。例如

有一个表包孕了谋略机的根基信息,而别的一个表包孕了IP地址信息。一个谋略机可能对应了多个IP地址。假如我盼望按照谋略机分组,然后统计它所有的IP地址,那么该怎么办呢?

你可以经由过程下面的典型找到谜底。我们的实现手段是经由过程一个函数来做。该函数吸收两个参数,一个便是谋略机的编号,一个则是我们盼望连接字符串的分隔符。

这个函数的核心是应用了游标。 值得留意的是,下面的脚本你最好是每段注释下面的代码作为一个零丁的批履行,而不要一次性整个履行。措施便是:选择每个注释下面的代码,然后按F5

--创建典型数据库

CREATE DATABASE DEMO

GO

USE DEMO

GO

--创建两个表

CREATE TABLE Computer(ID INT,ComputerName NVARCHAR(10))

GO

CREATE TABLag亚洲娱乐集团E IPAddress(ComputerID INT,IPAddress NVARCHAR(20))

GO

--增添10条记算机记录,每个谋略机增添2个IP地址

DECLARE @I INT

SET @I=1;

WHILE(@I10)

BEGIN

INSERT INTO Computer VALUES(@I,'Computer'+CONVERT(NVARCHAR(2),@I))

INSERT INTO IPAddress VALUES(@I,'IPAddress '+ CONVERT(NVARCHAR(2),@I))

INSERT INTO IPAddress VALUES(@I,'IPAddress '+ ag亚洲娱乐集团CONVERT(NVARCHAR(2),@I+1))

SET @I=@I+1

END

GO

--查看两个表的资料

SELECT * FROM Computer

SELECT * FROM IPAddress

--合并查看两个表单资料

SELECT C.*,I.* FROM Computer C JOIN IPAddress I ON C.ID=I.ComputerID

--创建函数来处置惩罚字符串的合并

CREATE FUNCTION SumString(@ID INT,@Dismember NVARCHAR(10))

RETURNS NVARCHAR(1000)

AS

BEGIN

DECLARE IPCursor CURSOR FOR

SELECT IPAddress FROM IPAddress WHERE ComputerID=@ID

DECLARE @RESULT NVARCHAR(1000)

DECLARE @IP NVARCHAR(20)

SET @RESULT=N''

OPEN IPCursor

FETCH NEXT FROM IPCursor INTO @IP

WHILE @@FETCH_STATUS=0

BEGIN

IF(@RESULT=N'')

SET @RESULT=@IP

ELSE

SET @RESULT=@RESULT+@Disag亚洲娱乐集团member+@IP

FETCH NEXT FROM IPCuag亚洲娱乐集团rsor INTO @IP

END

CLOSE IPCursor

DEALLOCATE IPCursor

REag亚洲娱乐集团TURN @RESULT

END

GO

--着末做联合查询显示,着实这个时刻已经用不着第二个表了

SELECT ID,ComputerName,dbo.SumString(ID,N',') AS IPAddressList FROM Computer GROUP BY ID,ComputerName

最近关注

热点内容

更多