如何在BigQuery中检查一个字符串字段是否只包含字母

3

如何检查BigQuery表中的字符串字段是否只包含字母和特定的特殊字符,例如Å、Ä和Ö?应该避免选择任何带有特殊字符或数字的值。

2个回答

4
您可以使用函数REGEXP_CONTAINS执行这种选择操作:
SELECT
  text,
  REGEXP_CONTAINS(text, r"^[A-Za-zÅÄÖ]+$") AS is_selected
FROM
  `dataset.yourtable`

使用正则表达式 "^[A-Za-zÅÄÖ]+$",仅由字母、Å、Ä或Ö组成的字符串将返回true

例如,对于下面的text列:

enter image description here


2
以下是涵盖所有特殊字符(如ç、æ、œ、á、é、í、ó、ú、à、è、ì、ò、ù、ä、ë、ï、ö、ü、ÿ、â、ê、î、ô、û、å、ø、Ø、Å、Á、À、Â、Ä、È、É、Ê、Ë、Í、Î、Ï、Ì、Ò、Ó、Ô、Ö、Ú、Ù、Û、Ü、Ÿ、Ç、Æ、Œ和ñ)的通用解决方案,保留HTML标记,使其更加易于理解。
select text
from `project.dataset.table`
where not regexp_contains(regexp_replace(normalize(text, NFD), r"\pM", ''), r'\W')            

如果应用于@Cylldby在他的答案中提供的样本数据 - 输出结果如下:

enter image description here


1
太棒了!谢谢,我学到了一些东西,这个解决方案比我的更详尽。我觉得@rr_coder不想在结果中包含数字,所以也许[^a-zA-Z]比\W更适合。 - undefined
1
谢谢 @Cylldby - 我认为我大多数的答案都是量身定制的,不仅仅是回答问题,而是提供了一些非平凡的解决方案!我总是试图在我的回答中加入一些调料,带来一些新鲜和非平凡的东西。请检查它们,并告诉我您是否同意 :o) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接