仓酷云

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

[学习教程] MSSQL网页编程之一连编号的流水号拼接成一个字串的存储...

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

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

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

x
限制,如果WHERE子句的查询条件里有不等号(WHEREcoloum!=),MySQL将无法使用索引。类似地,如果WHERE子句的查询条件里使用了函数(WHEREDAY(column)=),MySQL也将无法使用索引。存储历程|流水号
网友发问:
---------------------------------------
Test1表
IDstartend
115
2610
32125
42630
55160
但愿失掉了局:
string:1-10,21-30,51-60
---------------------------------------

用变量拼接字串的解法:

--建测试表:
createtabletest1(idint,startint,[end]int)

--增加测试数据:
inserttest1select1,1,5
unionselect2,6,10
unionselect3,21,25
unionselect4,26,30
unionselect5,51,60

--创建拼接字串的函数:
createprocedureproA
as
begin

declare@svarchar(8000)

--给变量赋表中第一行的响应值,cast(min(start)-1这里是为了共同前面的全表查询中的第一行给准确地接上。注重,假如流水号是从0入手下手,-要响应用其他字符如“+”号替换,最初select@s时,再改回‘-’号,详细的语句是:selectreplace(@s,+,-):
select@s=+cast(min(start)asvarchar(10))+-
+cast(min(start)-1asvarchar(10))
fromtest1

--按次查询并拼接字串:
select@s=left(@s,len(@s)-charindex(-,reverse(@s))+1)
+casewhencast(right(@s,charindex(-,reverse(@s))-1)asint)+1
=start
thencast([end]asvarchar(20))
elseright(@s,charindex(-,reverse(@s))-1)+,
+cast(startasvarchar(10))+-
+cast([end]asvarchar(10))
end
fromtest1
orderbystart

--前往了局:
select@s

end

--删除测试表:
droptabletest1

Mysql的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-19 18:14:12 来自手机 | 只看该作者
我个人认为就是孜孜不懈的学习
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-24 15:26:02 | 只看该作者
也可谈一下你是怎么优化存储过程的?
因胸联盟 该用户已被删除
地板
发表于 2015-2-1 19:15:57 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
小魔女 该用户已被删除
5#
发表于 2015-2-7 14:08:46 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
兰色精灵 该用户已被删除
6#
发表于 2015-2-22 04:52:38 | 只看该作者
如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
飘飘悠悠 该用户已被删除
7#
发表于 2015-3-6 23:05:26 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
只想知道 该用户已被删除
8#
发表于 2015-3-13 22:17:25 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
简单生活 该用户已被删除
9#
发表于 2015-3-20 20:57:16 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-28 01:35

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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