Forum Discussion
Extract 2 digits from a column
- 1 year ago
Hi santoshfx
You're trying to extract the first two digits from a Summary field in Power Query for values that start with "A2B", and while your custom column works correctly for most cases, you're seeing an unexpected result for the value "A2B_7b", which returns "74" instead of the expected "07" or null. Your logic uses Text.Middle([Summary], 3) to skip the "A2B" prefix, and then Text.Select(..., {"0".."9"}) to isolate digits. In theory, "A2B_7b" should yield just "7", and since there's only one digit, the logic should return null. However, the result of "74" suggests that the string may contain unexpected or hidden characters, or you might be referencing a different variation of the record (like "A2B_74b") without realizing it. This discrepancy can occur due to invisible formatting, trailing digits, or earlier query steps modifying the data. To identify the issue, you can create a temporary column showing the output of Text.Middle([Summary], 3) or use Text.ToList(...) to break the string into individual characters for closer inspection. This will help confirm what text is being evaluated and reveal whether the unexpected "4" is actually present in the string.
please try this one, modified a bit
if Text.Upper(Text.Start([Summary], 3)) = "A2B" then
let
textToSearch = Text.Middle([Summary], 3, 10), // Scan only the next 10 characters
length = Text.Length(textToSearch),
windows = List.Transform({0..length - 2}, each Text.Middle(textToSearch, _, 2)),
digitPairs = List.Select(windows, each Text.Length(_) = 2 and Text.Remove(_, {"0".."9"}) = "")
in
if List.Count(digitPairs) > 0 then digitPairs{0} else null
else
null