【问题标题】:Select rows from a table which contains at-least one alphabet in the column从列中至少包含一个字母的表中选择行
【发布时间】:2022-01-27 03:32:26
【问题描述】:

我在 Databricks 的一个表下有一个名为 name 的列。

我想找到一种仅从表中选择那些行的方法,该表在name 列中至少包含一个字母字符。

列中的示例值:

12243
#123-(23)
$ank
ada124$%
()
!asd
122acs#
gmgd32

预期:我只需要选择其中至少包含一个字母的值。或者换句话说,我需要一种方法来排除所有只包含数字和特殊字符的行。

所以预期的输出应该如下:

$ank
ada124$%
!asd
122acs#
gmgd32

因为它们中至少包含一个字母。

我在数据砖中使用 pyspark-sql。

【问题讨论】:

  • 无法测试,但快速谷歌建议您可以使用like '%[A-z]%'

标签: sql apache-spark pyspark apache-spark-sql databricks


【解决方案1】:

您可以将rlike 与正则表达式一起使用:


import pyspark.sql.functions as F

df.filter(F.col("name").rlike(".*[a-zA-Z]+.*")).show()

#+--------+
#|    name|
#+--------+
#|    $ank|
#|ada124$%|
#|    !asd|
#| 122acs#|
#|  gmgd32|
#+--------+

Spark SQL 等效查询:

SELECT * 
FROM   df
WHERE  name RLIKE '.*[a-zA-Z]+.*'

【讨论】:

  • 有听起来很迂腐的风险,所以不需要+
猜你喜欢
  • 2021-10-05
  • 1970-01-01
  • 2020-04-05
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2018-02-13
  • 2010-12-28
  • 2017-07-14
相关资源
最近更新 更多