雪花 SQL。如果前 5 个字符是数字且在数字范围内,则选择列值

问题描述 投票:0回答:1

我在名为ProcedureCode 的表中有一个名为ProcedureCode VARCHAR(16777216) 的列。 它的值包括“12345,46H”、“A4715,12W”、“98765”、“99200”等。

从该表中,我只需要提取前 5 个字符是数字的行, 前 5 个字符在 99200 - 99499 范围内。

在T-SQL中,我会使用IsNumeric()来确定字符串的前5个字符是否是数字[但我不能在Snowflake中使用IsNumeric()]。然后我会将前 5 个字符转换为数字。然后我会测试第 1 个 5 是否在我的范围内。

我不知道如何在 Snowflake 中执行此操作。

如果我能得到任何指示/帮助,我将不胜感激。

谢谢!

sql snowflake-cloud-data-platform range wildcard
1个回答
0
投票

您可以在左侧 5 个字符上使用 try_to_number。如果不是数字,则返回 null。然后您可以将其与您的范围进行比较:

create or replace table T1(S string);
insert into T1(S) values('99200ABC'), ('ABC12345');

select * from T1 
where try_to_number(left(S, 5)) between 99200  and 99499;
© www.soinside.com 2019 - 2024. All rights reserved.