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.