这个问题很容易被忽视,在这里写了一段代码分析一下三种情况: |
DATA:lv_num1 TYPE string.
DATA:lv_num2 TYPE string.
DATA:lv_num3 TYPE i.
DATA:lv_num4 TYPE i.
lv_num1 = '1000'.
lv_num2 = '50'.
lv_num3 = 20.
lv_num4 = 60.
*-->字符串之间大小比较
WRITE:/ '字符串之间大小比较'.
IF lv_num1 > lv_num2.
WRITE:/ lv_num1 ,'>', lv_num2.
ELSE.
WRITE:/ lv_num1 ,'<=', lv_num2.
ENDIF.
*-->字符串与数字大小比较
WRITE:/ '字符串与数字大小比较'.
IF lv_num1 > lv_num4.
WRITE:/ lv_num1 ,'>', lv_num4.
ELSE.
WRITE:/ lv_num1 ,'<=', lv_num4.
ENDIF.
*-->数字之间大小比较
WRITE:/ '数字之间大小比较'.
IF lv_num3 > lv_num4.
WRITE:/ lv_num3 ,'>', lv_num4.
ELSE.
WRITE:/ lv_num3 ,'<=', lv_num4.
ENDIF.
运行结果:
分析:
可见字符串之间的比较和我们想象中不一样,因为他是每个字符之间的比较,第一位和第一位比,如第一位相等,第二位和第二位比较,以此类推。
注意i类型长度是8,所以打印结果会有空格;
字符串和数字类型直接比较也是ok的,但是项目中建议同学们还是把类型都转换为数字类型再比较。
思考:
如果string类型换成CHAR类型,大小比较的规律是不是也是如此呢?