SQL (MS SQL Server) return 列值作为乘法结果
SQL (MS SQL Server) return column value as the result of the multiplication
我在 SQL 中有一个 table,如下所示:
table 如下所示:
Partno b5 b6 b7
A 3*38 4*38 5*38
B 4*1100 8*1100 15*1100
列 b5、b6、b7 当前为 nvarchar。
我可以检查如何使用乘法值将此列转换为 int 吗?
例如,如果列 b5=3*38 我想 return 为 114 等
非常感谢。
根据以下假设,您可以使用拆分查询并进行乘法运算。
- 您正在使用 sql 服务器
- 列中只有乘法
- 乘法只有两个值
- 所以最终,您在列中只有
a*b
您可以使用以下查询:
Select partno,
PARSENAME(REPLACE(b5,'*','.'),2) * PARSENAME(REPLACE(b5,'*','.'),1) as b5_res,
PARSENAME(REPLACE(b6,'*','.'),2) * PARSENAME(REPLACE(b6,'*','.'),1) as b6_res,
PARSENAME(REPLACE(b7,'*','.'),2) * PARSENAME(REPLACE(b7,'*','.'),1) as b7_res
From your_table t
给定数据结构,您可以使用简单的字符串操作:
select t.*,
multiple * try_convert(int, left(b4, charindex('*', b4) - 1)),
multiple * try_convert(int, left(b5, charindex('*', b5) - 1)),
multiple * try_convert(int, left(b6, charindex('*', b6) - 1))
from t;
Here 是一个 db<>fiddle.
我在 SQL 中有一个 table,如下所示:
table 如下所示:
Partno b5 b6 b7 A 3*38 4*38 5*38 B 4*1100 8*1100 15*1100
列 b5、b6、b7 当前为 nvarchar。 我可以检查如何使用乘法值将此列转换为 int 吗? 例如,如果列 b5=3*38 我想 return 为 114 等
非常感谢。
根据以下假设,您可以使用拆分查询并进行乘法运算。
- 您正在使用 sql 服务器
- 列中只有乘法
- 乘法只有两个值
- 所以最终,您在列中只有
a*b
您可以使用以下查询:
Select partno,
PARSENAME(REPLACE(b5,'*','.'),2) * PARSENAME(REPLACE(b5,'*','.'),1) as b5_res,
PARSENAME(REPLACE(b6,'*','.'),2) * PARSENAME(REPLACE(b6,'*','.'),1) as b6_res,
PARSENAME(REPLACE(b7,'*','.'),2) * PARSENAME(REPLACE(b7,'*','.'),1) as b7_res
From your_table t
给定数据结构,您可以使用简单的字符串操作:
select t.*,
multiple * try_convert(int, left(b4, charindex('*', b4) - 1)),
multiple * try_convert(int, left(b5, charindex('*', b5) - 1)),
multiple * try_convert(int, left(b6, charindex('*', b6) - 1))
from t;
Here 是一个 db<>fiddle.