我需要查找 7 个字符长的字母数字字符串,该字符串应始终采用 NNCCNNN 格式,其中 N 表示数字,C 表示字符,X 表示数字或字符。
例如 - 对于汽车 ID AB-CC-16TG842-ABA3864,ID 应为 16TG842
对于汽车 ID CD-CCIAL_50056956_15AD864,ID 应为 15AD864
对于汽车 ID FG-ENNNNN.OOPPLLI_PLOKI-17,ID 应为空。
我尝试使用 BYTE_LENGTH() 和 regex_extract() 但无法按预期获得它。
有人可以帮忙解决这个棘手的问题吗?
这是解决您的难题的直接解决方案:
with data as (
SELECT "AB-CC-16TG842-ABA3864" as car UNION ALL
SELECT "CD-CCIAL_50056956_15AD864" UNION ALL
SELECT "FG-ENNNNN.OOPPLLI_PLOKI-17"
)
SELECT REGEXP_EXTRACT(car, r"[[:digit:]][[:digit:]][[:alpha:]][[:alpha:]][[:digit:]][[:digit:]][[:digit:]]") as id FROM data
它利用了REGEX_EXTRACT