Power Query中移除Customer PO列前导零的方法求助
Power Query移除Customer PO列单个/两个前导零的解决方案
你的原公式仅做了开头字符判断,但未执行截取操作,所以无法移除前导零,以下是两种可行的解决方法:
方法一:条件判断精准截取文本
通过判断开头字符的情况,针对性截取后续内容:
= Table.TransformColumns(#"Filtered Rows1", { {"Customer PO", each let textVal = Text.From(_), len = Text.Length(textVal) in if len >= 2 and Text.Start(textVal, 2) = "00" then Text.Range(textVal, 2) else if len >= 1 and Text.Start(textVal, 1) = "0" then Text.Range(textVal, 1) else textVal } })
- 先将列值转为文本格式,避免数值类型丢失前导零信息
- 优先判断是否以
00开头,是则从第3位(索引2)开始截取文本 - 若仅以单个
0开头,则从第2位(索引1)开始截取 - 其他情况直接返回原文本
方法二:正则表达式替换(更简洁)
利用正则匹配开头1-2个0,直接替换为空:
= Table.TransformColumns(#"Filtered Rows1", { {"Customer PO", each Text.Replace(Text.From(_), "^0{1,2}", "", [Regex=true])} })
^0{1,2}是正则表达式:^匹配字符串开头,0{1,2}匹配1个或连续2个0- 通过
[Regex=true]启用正则替换,精准移除目标前导零,不会影响文本中间或末尾的0
注意事项
如果Customer PO列是数值类型,必须用Text.From(_)转为文本后再处理——因为数值类型本身不会保存前导零,直接处理会导致原始前导零信息丢失。
内容的提问来源于stack exchange,提问作者user21949225
相关产品推荐
相关产品推荐

