【发布时间】:2021-12-03 16:17:14
【问题描述】:
使用 Microsoft SQL Server 2019
所以我已经从一个大文本字段中解析出几列,并且需要使用解析后的数据作为其他字段的乘数 这是一个主要用于上下文的解析列
SUBSTRING(curv.curv_data,
CHARINDEX('PctUsage', curv.curv_data, CHARINDEX('||1', curv.curv_data)) + 9,
(CHARINDEX(')())', curv.curv_data, CHARINDEX('PctUsage', curv.curv_data, CHARINDEX('||2', curv.curv_data))) - 9) - CHARINDEX('PctUsage', curv.curv_data, CHARINDEX('||1', curv.curv_data) + 9)) PctUsage1
这是输出。
| PctUsage1 |
|---|
| 5 |
| 3.5 |
| 0.5 |
| 6.5 |
| 5 |
| 9 |
| 1 |
| 1.3 |
| 1.5 |
| 25. |
| 4 |
| 0.0 |
| 1.2 |
所以考虑到有 0 和 0.5,我很难将这个专栏变成有用的东西。我想要的最终结果是将这些转换为可用的百分比,例如 5 转换为 .05 等等。
我将在子选择中使用上面的 SQL,然后将其用作我的工作时间字段的乘数 这里是我的乘数字段的示例
| Working_hours |
|---|
| 51.600006 |
| 0.000000 |
| 20.799993 |
| 8.399999 |
| 28.799999 |
| 86.027731 |
| 5.199999 |
这是我希望能够使用的线
PctUsage1*Working_hours curved_hours,
所以 working_hours 已经是一个整数,但 Pctusage1 是一个 varchar
提前感谢您的帮助
【问题讨论】:
-
如果您需要小数位,您想使用十进制数据类型,而不是 int。您只需除以 100.0 即可轻松地将结果转换为所需的输出。注意那里的小数点,这很重要。
-
仅供参考,您使用的是 SQL Server,不是 SQL Server Management Studio (SSMS)。 SSMS 只是一个用于 SQL Server 的 IDE。这就像在被问到您使用什么语言进行编码时说您正在使用 Visual Studio。
-
我非常愿意将结果划分为 100,我的问题是将它当前的 varchar 转换为可以划分的东西,如果你有任何建议,我全神贯注(和眼睛) 感谢您的回复!
-
关于将它们转换为百分比,我个人会将它们保留为十进制值。 5% 作为数值 是
0.05并且任何好的表示层都将显示像0.05这样的值,当给定类似"0%"的格式样式时,该值将显示为5%。 -
@Larnu 谢谢你,这将有助于前进。有没有一种简单的方法可以告诉我正在运行什么版本的 SQL Server?
标签: sql-server integer varchar