SQL - 从字母数字字符串中提取前 5 个连续数字
SQL - Extracting first 5 consecutive numbers from alphanumeric string
我使用的是 AWS Athena,所以功能有点受限。但本质上我想从字母数字字段中提取前 5 个连续和连续的数字。
从第一个示例中,您可以看到它忽略了第一个 1,因为没有 4 个尾随数字。我想从该字段中查找并提取一起给出的前 5 个数字。输出字段是我希望实现的。
这将找到 5 位数字的精确序列。
少于或多于 5 位的序列将被忽略。
^|\D = Indication for the start of the text OR a non-digit character
\d{5} = 5 digits
\D|$ = A non-digit character OR indication for the end of the text
with t (Example) as (values ('Ex/l/10345/Pl'), ('Ex/23453PlWL'), ('ID09456//'))
select Example, regexp_extract(Example, '(^|\D)(\d{5})(\D|$)', 2) as Output
from t
+---------------+--------+
| Example | Output |
+---------------+--------+
| Ex/l/10345/Pl | 10345 |
| Ex/23453PlWL | 23453 |
| ID09456// | 09456 |
+---------------+--------+
我使用的是 AWS Athena,所以功能有点受限。但本质上我想从字母数字字段中提取前 5 个连续和连续的数字。
从第一个示例中,您可以看到它忽略了第一个 1,因为没有 4 个尾随数字。我想从该字段中查找并提取一起给出的前 5 个数字。输出字段是我希望实现的。
这将找到 5 位数字的精确序列。
少于或多于 5 位的序列将被忽略。
^|\D = Indication for the start of the text OR a non-digit character
\d{5} = 5 digits
\D|$ = A non-digit character OR indication for the end of the text
with t (Example) as (values ('Ex/l/10345/Pl'), ('Ex/23453PlWL'), ('ID09456//'))
select Example, regexp_extract(Example, '(^|\D)(\d{5})(\D|$)', 2) as Output
from t
+---------------+--------+
| Example | Output |
+---------------+--------+
| Ex/l/10345/Pl | 10345 |
| Ex/23453PlWL | 23453 |
| ID09456// | 09456 |
+---------------+--------+