Sql 用于在字符串中查找特定字符的正则表达式
我有这些样本值Sql 用于在字符串中查找特定字符的正则表达式,sql,regex,apache-spark,pyspark,Sql,Regex,Apache Spark,Pyspark,我有这些样本值 prm_2020 P02 United Kingdom London 2 for 2 prm_2020 P2 United Kingdom London 2 for 2 prm_2020 P10 United Kingdom London 2 for 2 prm_2020 P11 United Kingdom London 2 for 2 需要像这样查找P2、P02、P11、p06、p05,尝试在databricks中使用Regexp_提取函数。努力寻找正确的表达方式。一旦我从
prm_2020 P02 United Kingdom London 2 for 2
prm_2020 P2 United Kingdom London 2 for 2
prm_2020 P10 United Kingdom London 2 for 2
prm_2020 P11 United Kingdom London 2 for 2
需要像这样查找P2、P02、P11、p06、p05,尝试在databricks中使用Regexp_提取函数。努力寻找正确的表达方式。一旦我从字符串中找到P10,p6,我需要在名为ID的新列中输入数字
select distinct
promo_name
,regexp_extract(promo_name, '(?<=p\d+\s+)P\d+') as regexp_id
from stock
where promo_name is not null
select distinct
promo_name
,regexp_extract(promo_name, 'P[0-9]+') as regexp_id
from stock
where promo_name is not null
选择distinct
促销名称
,regexp_extract(promo_name),(?表达式为:
select regexp_extract(col, 'P[0-9]+')
表达方式是:
select regexp_extract(col, 'P[0-9]+')
一个正则表达式可以是(?一个正则表达式可以是(?只需选择组0
regexp_extract(promo_name, 'P[0-9]+',0)
只需选择组0
regexp_extract(promo_name, 'P[0-9]+',0)
函数regexp\u extract
将包含3个参数
- 列值
- 正则表达式模式
- 组索引
regexp\u extract
函数中缺少最后一个参数
检查下面的代码
scala> df.show(truncate=False)
+------------------------------------------+
|data |
+------------------------------------------+
|prm_2020 P02 United Kingdom London 2 for 2|
|prm_2020 P2 United Kingdom London 2 for 2 |
|prm_2020 P10 United Kingdom London 2 for 2|
|prm_2020 P11 United Kingdom London 2 for 2|
+------------------------------------------+
函数regexp\u extract
将包含3个参数
- 列值
- 正则表达式模式
- 组索引
regexp\u extract
函数中缺少最后一个参数
检查下面的代码
scala> df.show(truncate=False)
+------------------------------------------+
|data |
+------------------------------------------+
|prm_2020 P02 United Kingdom London 2 for 2|
|prm_2020 P2 United Kingdom London 2 for 2 |
|prm_2020 P10 United Kingdom London 2 for 2|
|prm_2020 P11 United Kingdom London 2 for 2|
+------------------------------------------+
SQL语句中的错误:SparkException:作业因阶段失败而中止:阶段179.0中的任务6失败4次,最近的失败:阶段179.0中的任务6.3丢失(TID 12754,10.92.191.203,executor 23):java.lang.IndexOutOfBoundsException:无组1您可能应该使用某种IF NULL构造来处理select语句中不返回匹配项的字符串。谢谢veverke,我的列中没有空值,因为它已经存在filtered@user3061338…我看不出aregexp\u extract()如何
可能会导致越界错误。似乎发生了其他情况。SQL语句中的错误:SparkException:作业因阶段失败而中止:阶段179.0中的任务6失败4次,最近的失败:阶段179.0中的任务6.3丢失(TID 12754,10.92.191.203,executor 23):java.lang.IndexOutOfBoundsException:无组1您可能应该使用某种IF NULL构造来处理select语句中不返回匹配项的字符串。谢谢veverke,我的列中没有空值,因为它已经存在filtered@user3061338…我看不出aregexp\u extract()如何
可能导致越界错误。似乎发生了其他情况。