Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 用于在字符串中查找特定字符的正则表达式_Sql_Regex_Apache Spark_Pyspark - Fatal编程技术网

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…我看不出a
regexp\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…我看不出a
regexp\u extract()如何
可能导致越界错误。似乎发生了其他情况。