仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 758|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网页设计剖析SQL Server 2005 溢用之:兼并列值...

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:18:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在我们工作的过程中,经常能听到很多不使用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
    [values]=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中。
曾经的功能列表可能会迅速变得过时了。而且,有些功能对有的应用程序非常重要,但是对别的应用程序则不一定。
柔情似水 该用户已被删除
沙发
发表于 2015-1-19 07:45:17 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
山那边是海 该用户已被删除
板凳
发表于 2015-1-25 10:02:42 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
爱飞 该用户已被删除
地板
发表于 2015-2-2 21:38:46 | 只看该作者
也可谈一下你是怎么优化存储过程的?
活着的死人 该用户已被删除
5#
发表于 2015-2-8 06:47:02 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
admin 该用户已被删除
6#
发表于 2015-2-24 22:09:17 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
愤怒的大鸟 该用户已被删除
7#
发表于 2015-3-7 13:51:00 | 只看该作者
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。
深爱那片海 该用户已被删除
8#
发表于 2015-3-15 07:37:21 | 只看该作者
不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?
乐观 该用户已被删除
9#
发表于 2015-3-21 22:54:02 | 只看该作者
XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 03:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表