首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OpenSQL中定义强制转换为浮动?

如何在OpenSQL中定义强制转换为浮动?
EN

Stack Overflow用户
提问于 2017-01-16 22:14:01
回答 2查看 10.2K关注 0票数 1

我尝试用CAST方式编写select语句,但不知道如何输入浮点值。

这样做是行不通的:

代码语言:javascript
复制
SELECT
  field1, field2,
  CAST( field3 AS FLTP ) * CAST( '0.03' AS FLTP )  AS out2  
FROM table1
INTO TABLE @DATA(lt_table1).

我得到了这样的错误信息:CASTs to a numeric type are not allowed for '0.03' (the type is incorrect),所以我猜引号中的任何内容都被假定为文本。

我找到了解决办法:

代码语言:javascript
复制
DATA: lv_discount TYPE f VALUE '0.03'.

SELECT
  field1, field2,
  CAST( field3 AS FLTP ) * CAST( @lv_flt AS FLTP ) AS out1
FROM table1
INTO TABLE @DATA(lt_table1).

如果没有这个解决办法,我怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-17 14:47:32

ABAP 不支持数字文本中的小数点,它们应该像建议的这里那样以字符文本指定。

缺点是CAST运算符不支持字符文字,就像它的语法帮助说的那样:

对于操作数操作数,除十进制浮点数外,数据库表或视图的列、加上主机变量dobj和文本的所有数字类型都可能是

可能的解决办法如下:

代码语言:javascript
复制
SELECT matnr, menge,
  CAST( menge AS FLTP ) * CAST( 3 AS FLTP ) / CAST( 100 AS FLTP ) AS out2
FROM mseg
INTO TABLE @DATA(lt_table1).
票数 1
EN

Stack Overflow用户

发布于 2017-10-11 22:12:23

然而,更好的选择是在Open中使用ABAP表达式

代码语言:javascript
复制
   SELECT
      field1, field2,
      CAST( field3 AS FLTP ) * @( conv f( '0.03' ) ) AS out1
    FROM table1
    INTO TABLE @DATA(lt_table1).
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41685862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档