首页 新闻 会员 周边 捐助

在SQL中进行字符串操作,包括case的验证对程序的 性能带来的损耗大不大

0
悬赏园豆:50 [已解决问题] 解决于 2013-07-30 23:28

比如像下面这样子的写法:

select top 10  SUBSTRING(RollNum,0,CHARINDEX ('.',RollNum)) as SortNum,SUBSTRING(RollNum,CHARINDEX ('.',RollNum)+1,CASE when (CHARINDEX(ProjectNum,RollNum)-CHARINDEX('.',RollNum)-2) <0 then 0 else (CHARINDEX(ProjectNum,RollNum)-CHARINDEX('.',RollNum)-2) end) as BranchNum,SUBSTRING(RollNum,CHARINDEX ((ProjectNum),RollNum)+1+len(ProjectNum),len(RollNum)) as RollSerialNo,RollNum,ProjectNum from ams_VProjArchiveRoll

御风行的主页 御风行 | 初学一级 | 园豆:157
提问于:2013-07-29 13:22
< >
分享
最佳答案
0

如果只是几千行数据影响不大的,你把最可能的那一种放前面。

另外你可以制定规则,在数据存储的时候,如果是你的条件一 ,存储0,如果是条件二存储1,如此类推,在查询的时候就快很多!

收获园豆:30
maanshancss | 菜鸟二级 |园豆:303 | 2013-07-29 14:43

其实我都想添加字段来存储这些信息的,只可惜数据库是不允许轻易改变的才要这样子做,最终我是使用二次查询来解决的。

御风行 | 园豆:157 (初学一级) | 2013-07-30 23:28
其他回答(3)
0

建议sql不也要做这种数据处理,只处理查数据,将数据取回到代码中,再进行数据处理。

收获园豆:10
滴答的雨 | 园豆:3660 (老鸟四级) | 2013-07-29 13:52

有一些控件是直接绑定SQL语句的,这是我不能左右的,其实我也知道用代码处理好一点,而且代码处理还简洁呢

支持(0) 反对(0) 御风行 | 园豆:157 (初学一级) | 2013-07-30 23:25
0

看数据量,没到一定量级,这不是问题~

收获园豆:9
幻天芒 | 园豆:37207 (高人七级) | 2013-07-29 20:03
0

学习了

收获园豆:1
panjk | 园豆:712 (小虾三级) | 2013-07-30 08:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册