求大神解释一下这句sql语句,谢谢。

Cast(SUBSTRING(sizeP,0,CHARINDEX('/',sizeP)) as decimal)/Cast(SUBSTRING(sizeP,CHARINDEX('/',sizeP)+1,len(sizeP)) as decimal) end where LEN(rtrim(sizeP)) > 0
假设sizeP = 12/3
我的理解是
CHARINDEX('/',sizeP) 从 12/3中 找‘/’的位置 是3;
SUBSTRING(sizeP,0,CHARINDEX('/',sizeP) 从12/3中0的位置,选取3个字符 12/
Cast 12/ as decimal 这个不理解,转为decimal的结果是12还是报错呢? 如果是12的话后边的语句才能解释的通。
len(sizeP) 得到字符串长度 4
CHARINDEX('/',sizeP)+1 找12/3中 ‘/'+1的位置的内容, 4
SUBSTRING(sizeP,CHARINDEX('/',sizeP)+1,len(sizeP) 在12/3中 查找第4个字符的位置,截取4个长度的字符, 还是3, (3是 12/3 的最后一个字符,截取4个字符等于只截取了1个字符,后边3个字符没有)
end : 前边sql语句没打完, 应该是case ... else.... end 的语句结束的意思吧?
where LEN(rtrim(sizeP)) > 0 rtrim(sizeP)是去除12/3右边的空格 ;也就是sizeP的长度>0时,前边的sql语句生效。
整段的意思就是 通过 查找"/" 在sizeP中的位置 ,用前边的字符串除以后边的字符串,最后得出数值,像这个例子,就是12除以3,得4
我这么分析的对吗?请大神指点,谢谢

sql
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问