从VARCHAR字段中删除前导零-仅适用于数字

2020-09-20 22:04发布

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

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


嗨,

我们有一种情况,我们只需要修剪具有数字的材料的前导零,而应该保留那些Alpha数值的材料。

000000000000012345-应更改为12345

001-AA-5TEST-无需更改。

是否具有检查列中的值是否为Alpha数字的函数?

请提出建议。

谢谢

Gokul

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

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


嗨,

我们有一种情况,我们只需要修剪具有数字的材料的前导零,而应该保留那些Alpha数值的材料。

000000000000012345-应更改为12345

001-AA-5TEST-无需更改。

是否具有检查列中的值是否为Alpha数字的函数?

请提出建议。

谢谢

Gokul

付费偷看设置
发送
4条回答
Alawn_Xu
1楼 · 2020-09-20 22:29.采纳回答

因此,发布信息后,我考虑过要获得想要的结果,所有数据(仅对数字值进行了修剪)都可以进行如下查询:

选择A,B从T,其中B LIKE_REGEXPR'\ D'
 联盟
 从T处选择A,LTRIM(B,'0'),而不是L BIKE_REGEXPR'\ D'
 按A订购;
 

假设有一些东西可以按您希望的顺序放回去。 但是最终结果看起来像这样:

 A B
 1 12345
 2 001-AA-5TEST
 
huskylover
2楼-- · 2020-09-20 22:24

关于此的三个提示:

1。 在发布问题之前先搜索!

2。 regexpr_-functions是您的朋友。

3。 在发布问题之前先搜索!

打个大熊猫
3楼-- · 2020-09-20 22:26

不确定这是否足够,但是您可以在where子句中使用LIKE_REGEXPR来识别值中没有数字的对象,然后可以用 他们。

创建表T(A INT,B varchar(50));
 插入T值(1,'000000000000012345');
 插入T值(2,'001-AA-5TEST');

 SELECT A,B FROM T where B LIKE_REGEXPR'\ D';

 -或使用NOT运算符将其反转

 从T中选择A,B,其中NOT B LIKE_REGEXPR'\ D';
 

第一个查询仅返回第二行,因为其中包含数字以外的内容。 第二个查询只返回第一行,因为它都是全数字。

希望有帮助,

克里斯

路亽曱_Ryan
4楼-- · 2020-09-20 22:27

你好,

您还可以使用以下公式,该公式非常快。

公式1:

if(match(" PRODUCT_ID",'* A *')OR match(" PRODUCT_ID",'* B *')OR match(" PRODUCT_ID",'* C *')OR match(" PRODUCT_ID", '* D *')OR匹配(" PRODUCT_ID",'* E *')OR匹配(" PRODUCT_ID",'* F *')OR匹配(" PRODUCT_ID",'* G *')OR匹配(" PRODUCT_ID ",'* H *')OR match(" PRODUCT_ID",'* I *')OR match(" PRODUCT_ID",'* J *')OR match(" PRODUCT_ID",'* K *')OR match( " PRODUCT_ID",'* L *')OR匹配(" PRODUCT_ID",'* M *')OR匹配(" PRODUCT_ID",'* N *')OR匹配(" PRODUCT_ID",'* O *')OR match(" PRODUCT_ID",'* P *')OR match(" PRODUCT_ID",'* Q *')OR match(" PRODUCT_ID",'* R *')OR match(" PRODUCT_ID",'* S *' )OR match(" PRODUCT_ID",'* T *')OR match(" PRODUCT_ID",'* U *')OR match(" PRODUCT_ID",'* V *')OR match(" PRODUCT_ID",'* W *')OR match(" PRODUCT_ID",'* X *')OR match(" PRODUCT_ID",'* Y *')OR match(" PRODUCT_ID",'* Z *')," PRODUCT_ID",ltrim(" PRODUCT_ID",'0'))

公式2:

if(

strlen(替换(替换(替换(替换(替换(替换(替换(替换(替换(替换(" PRODUCT_ID",'0","),'1',''),'2',' '),'3',''),'4',''),'5',''),'6',''),'7',''),'8','') ,'9',''))> 0,1,0)

感谢
RufusSamuel

一周热门 更多>