在 Azure Databricks 中检索“-”符号之前的字符

Retrieve characters before the '-' symbol in Azure Databricks

我想从“-”符号之前的列中提取数据。我可以使用 T-SQL 轻松完成此操作,但在 Azure Databricks 中执行相同操作时出现错误。 我还希望能够检查该列是否有这样的符号,如果它不存在我不想提取数据。

在 T-SQL 我可以写:

  SELECT EmailAddress
 ,SUBSTRING(emailaddress, 0, charindex('@', emailaddress, 0))
 FROM [dbo].[DimEmployee]

请问如何在 Databricks 中获得相同的结果?

  1. 要查找带有'-'符号的记录,可以使用pyspark.sql.Column.contains

    Column.contains(other)
    

包含另一个元素。 Returns 基于字符串匹配的布尔列。

  1. regexp_extract_all function
    

提取str中匹配正则表达式并对应正则表达式组索引的所有字符串。

regexp_extract_all(str, regexp [, idx] )

例如

SELECT regexp_extract_all('100-200, 300-400', '(\d+)-(\d+)', 1);
 [100, 300]

参考 - https://docs.databricks.com/sql/language-manual/functions/regexp_extract_all.html#regexp_extract_all-function-databricks-sql