以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sql 问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=109363)

--  作者:Springamy
--  发布时间:2017/11/10 11:40:00
--  sql 问题

你好,大大,这3个case when 和 len\\ Substring 组合起来的sql,是什么意思?

(Case when len(b.gysddhm)>=12 Then
                 (Case when (len(b.gysddhm)=13 Or len(b.gysddhm)=15) Then SubString(b.gysddhm,1,len(b.gysddhm)-1)+\'1\'   else  

                    (Case when (len(b.gysddhm)=17 and b.cpx=\'DP\') then SubString(b.gysddhm,1,len(b.gysddhm)-                 

                        5)+\'1\'+SubString(b.gysddhm,len(b.gysddhm)-3,1)+\'1\'+ SubString(b.gysddhm,len(b.gysddhm)-1,2) else  

   

                                     SubString(b.gysddhm,1,len(b.gysddhm)-2)+\'1\'+SubString(b.gysddhm,len(b.gysddhm),1) end)
               end


            else \'456\' end

 


--  作者:有点甜
--  发布时间:2017/11/10 11:52:00
--  

(Case when len(b.gysddhm)>=12 Then

 

意思是,如果gysddhm的字符长度大于等于12

 

SubString(b.gysddhm,1,len(b.gysddhm)-1)+\'1\'

 

意思是,截取gysddhm的字符,从第一位到最后一位-1,加上字符1