gjfvip123 2017-05-18 05:48 采纳率: 0%
浏览 442

求大神解释一下这句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
我这么分析的对吗?请大神指点,谢谢

  • 写回答

1条回答 默认 最新

  • 柠檬味的鱼° 2023-04-20 11:47
    关注

    这个SQL语句使用了SUBSTRING函数来提取字符串中的子字符串,并使用CAST函数将其转换为数字类型。然后,使用WHERE子句来筛选出长度大于0的子字符串,并使用/运算符将其转换为小数类型。

    具体来说,这个SQL语句的作用是从一个字符串中提取出子字符串,并将其转换为小数类型。其中,sizeP是要提取子字符串的字符串,CHARINDEX函数用于获取子字符串中的第一个/字符的位置,LEN函数用于获取子字符串的长度,SUBSTRING函数用于提取子字符串,CAST函数用于将子字符串转换为数字类型。

    最后,使用WHERE子句来筛选出长度大于0的子字符串,并使用/运算符将其转换为小数类型。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog