比如像下面这样子的写法:
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
如果只是几千行数据影响不大的,你把最可能的那一种放前面。
另外你可以制定规则,在数据存储的时候,如果是你的条件一 ,存储0,如果是条件二存储1,如此类推,在查询的时候就快很多!
其实我都想添加字段来存储这些信息的,只可惜数据库是不允许轻易改变的才要这样子做,最终我是使用二次查询来解决的。
建议sql不也要做这种数据处理,只处理查数据,将数据取回到代码中,再进行数据处理。
有一些控件是直接绑定SQL语句的,这是我不能左右的,其实我也知道用代码处理好一点,而且代码处理还简洁呢
看数据量,没到一定量级,这不是问题~
学习了