如何在sql中将字符串值乘以longint

gajydyqb  于 2021-08-01  发布在  Java
关注(0)|答案(3)|浏览(401)

我有下面的数据,我想乘在一起,a列乘以b列得到c列。
a的数据类型为string,b的数据类型为long。

  1. A B
  2. 16% 894
  3. 15% 200

我在查询中尝试过这个表达式 cast(A as int)*B 但这给了我一个错误。

jexiocij

jexiocij1#

在尝试强制转换之前,需要删除“%”符号。假设你真的想计算这个百分比,那么你还需要除以100.00。

  1. cast(replace(A,'%','') as int)/100.00*B

注意:您需要使用 100.00 而不是 100 强制十进制算术而不是整数。或者可以将其转换为十进制(9,2)而不是int-任何一种方法都可以确保得到准确的结果。
您可能希望减少返回的小数点的数量,在这种情况下,您可以将其转换回所需的数据类型。

  1. cast(cast(replace(A,'%','') as int)/100.00*@ as decimal(9,2))

注: decimal(9,2) 这只是一个例子-你可以使用任何精度和规模你需要的。

wljmcqd8

wljmcqd82#

你可以在下面试试-

  1. select cast(left(A, patindex('%[^0-9]%', A+'.') - 1) as int)*B
  2. from tablename
4si2a6ki

4si2a6ki3#

在sqlserver中强制转换的语法是 CAST(expression AS TYPE); 由于无法将“%”转换为整数,因此必须用空字符替换它,如下所示:

  1. SELECT cast(replace(A,'%','') AS int);

最后你可以写如下:

  1. SELECT (cast(replace(A,'%','') AS int)/100.00)*B as C;

相关问题