我对红移很陌生,我的桌子上有下面的邮政编码
B13 7GB
BA43 87F
BR8 H4D
B4H HFT我只想从第一个字母后面的0到9中提取有数字的行。
预期产出
B13 7GB
B4H HFT谢谢
发布于 2022-03-17 09:22:41
也许有人可以提供一个“简单”的答案,但我喜欢使用REGEX函数尽可能精确。
select code
from tbl
where regexp_count(code,'^[A-Z]{1}[0-9]{1}')>0^ ->只检查字符串的开头(我们的代码)。
A{1} ->搜索一个大写字母.
0-9 {1} ->从0-9搜索一个数字.
合在一起:
在字符串的开头,搜索一个大写字母,后面跟着0-9的一个数字。
发布于 2022-03-17 16:12:06
Regexp非常灵活,但是在Redshift中它不是很快。如果您的数据集非常大,您可能会更适合这种类似的简单情况。
select *
from tbl
where code SIMILAR TO '_[0-9]%';LIKE和LIKE不如regexp灵活,但是编译和运行更快。一般来说,语法越灵活,执行起来就越困难。这(以及向后兼容性)是为什么LIKE和LIKE仍然存在的原因。
https://stackoverflow.com/questions/71509198
复制相似问题