MYSQL网页设计剖析SQL Server 2005 溢用之:兼并列值...
在我们工作的过程中,经常能听到很多不使用MySQL的理由,虽然其中有一些是对MySQL的误解,不过同样也有一些是合情合理的。 良多人大概发明,不管是在sql2000,仍是在sql2005中,都没有供应字符串的聚合函数,以是,当我们在处置以下请求时,会对照贫苦,但在SQLServer2005中,这类情形失掉了改良,我们能够轻松地完成这项处置。成绩形貌:
不管是在sql2000,仍是在sql2005中,
都没有供应字符串的聚合函数,以是,当
我们在处置以下请求时,会对照贫苦:
有表tb,以下:
id value
-----------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
必要失掉了局:
id values
-----------------
1 aa,bb
2 aaa,bbb,ccc
即,groupbyid,求value的和(字符串相加)</p> 1.旧的办理办法
创立处置函数
CREATEFUNCTIONdbo.f_str(@idint)
RETURNSvarchar(8000)
AS
BEGIN
DECLARE@rvarchar(8000)
SET@r=
SELECT@r=@r+,+value
FROMtb
WHEREid=@id
RETURNSTUFF(@r,1,1,)
END
GO
--挪用函数
SELECtid,values=dbo.f_str(id)
FROMtb
GROUPBYid</p> 2.新的办理办法
示例数据
DECLARE@tTABLE(idint,valuevarchar(10))
INSERT@tSELECT1,aa
UNIONALLSELECT1,bb
UNIONALLSELECT2,aaa
UNIONALLSELECT2,bbb
UNIONALLSELECT2,ccc
--查询处置
SELECT*
FROM(
SELECTDISTINCT
id
FROM@t
)A
OUTERAPPLY(
SELECT
=STUFF(REPLACE(REPLACE(
(
SELECTvalueFROM@tN
WHEREid=A.id
FORXMLAUTO
),<Nvalue=",,),"/>,),1,1,)
)N/*--了局
id values
---------------------------
1 aa,bb
2 aaa,bbb,ccc
(2行受影响)
--*/</p> 注:兼并与分拆的CLR,sql2005的示例中有:
在安装sql2005的示例后,默许安装目次为drive:ProgramFilesMicrosoftSQLServer90SamplesEngineProgrammabilityCLRStringUtilities中。
曾经的功能列表可能会迅速变得过时了。而且,有些功能对有的应用程序非常重要,但是对别的应用程序则不一定。 我们学到了什么?思考问题的时候从表的角度来思考问 财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的.. 也可谈一下你是怎么优化存储过程的? 如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。 而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~ 记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。 不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理? XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
页:
[1]