SQL HANA字符串功能

2020-09-14 07:28发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个表,其中的列LIST_OF_NUMBERS包含以下字符串:

10、20、395、443、534、734、954、105、156

我想将LIST_OF_NUMBERS列截断为10个字符,如下所示:

LEFT(LIST_OF_NUMBERS,10)

10,20,39

但是,如果字符串列表中的数字被部分截断,我想截断整个数字。 例如,在我的情况下,我不想显示39,因为它被误解了。 我想按如下方式截断整个数字:

10,20,

我相信可以通过以下条件实现:

如果字符串不以逗号结尾,则截断字符串,直到它以逗号结尾。

如何在sql脚本中翻译这种情况?

请注意,我是创建存储过程的新手。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个表,其中的列LIST_OF_NUMBERS包含以下字符串:

10、20、395、443、534、734、954、105、156

我想将LIST_OF_NUMBERS列截断为10个字符,如下所示:

LEFT(LIST_OF_NUMBERS,10)

10,20,39

但是,如果字符串列表中的数字被部分截断,我想截断整个数字。 例如,在我的情况下,我不想显示39,因为它被误解了。 我想按如下方式截断整个数字:

10,20,

我相信可以通过以下条件实现:

如果字符串不以逗号结尾,则截断字符串,直到它以逗号结尾。

如何在sql脚本中翻译这种情况?

请注意,我是创建存储过程的新手。

付费偷看设置
发送
3条回答
我是小鹏鹏啊
1楼-- · 2020-09-14 08:10

一种解决方法如下:

做
 开始
   -准备测试数据
   lt_test =从哑元中选择'10,20,395,443,534,734,954,105,156'作为list_of_numbers
             联合全部从哑元中选择'10,20、36、443、534、734、954、105、156'作为list_of_numbers
             union都从哑元中选择'10,20,4,443,534,734,954,105,156'作为list_of_numbers;
  
   -中间最多可有10个字符,没有剪切编号
   当length(list_of_numbers)> 10时选择大小写
            然后
              当locate_regexpr('[0-9]'在子字符串(list_of_numbers,11,1))> 0中时的情况
                然后
                  子串(list_of_numbers,1,定位(左(list_of_numbers,10),',',-1))
                其他
                  左(list_of_numbers,10)
              结束
            否则剩下(list_of_numbers,10)个结束
   来自:lt_test;
 结束;
 

该脚本基本上是什么?

  • 检查字符串是否超过10个字符,如果不使用最大值。 可用字符。
  • 如果字符串长于10个字符,则检查在第11个位置是否有数字可用(以检查数字是否会被截断)。 如果不是,请使用前10个字符。
  • 如果第11个位置的字符是数字,则在前10个字符中搜索最后一个','。 利用该信息,子字符串可以从前10个字符中的第一个字符到最后找到的字符'。

关于,
弗洛里安语

My梦
2楼-- · 2020-09-14 08:16

如果列表以10或更多数字开头的数字,您想做什么?

微wx笑
3楼-- · 2020-09-14 08:06
< 永远不会发生。 一个数字的最大位数为4。

一周热门 更多>