apache-spark-sql - 在spark sql中查找字符串中的字符索引

标签 apache-spark-sql pyspark-sql databricks

我是 SQL 人,是 Spark SQL 的新手

我需要找到字符索引 '-' 在字符串中的位置,如果有那么我需要输入字符的固定长度,否则长度为零

string name = 'john-smith'

如果“-”在字符位置 4 则为 10 否则长度为 0

我已经在 SQL Server 中完成,但现在需要在 Spark SQL 中完成。
select 
case 
when charindex('-', name) = 4 then 10
else 0 
end 

我在 Spark SQL 中尝试过,但没有得到结果。
select find_in_set('-',name) 

请帮忙。谢谢

最佳答案

您可以使用 instr 函数,如下所示。 insrt 检查第二个 str 参数是否是第一个参数的一部分,如果是,则返回从 1 开始的索引。

//first create a temporary view if you don't have one already
df.createOrReplaceTempView("temp_table")

//then use instr to check if the name contains the - char
spark.sql("select if(instr(name, '-') = 4, 10, 0) from temp_table")

if 语句的参数是:
  • instr(name, '-') = 4检查条件
  • 10 有效条件的结果
  • 0 结果为假条件
  • 关于apache-spark-sql - 在spark sql中查找字符串中的字符索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56848721/

    相关文章:

    scala - 根据 scala 中工资列的平均值映射新列值(将字符串转换为 int)

    scala - 哪种方法最好检查数据帧是否为空? `df.limit(1).count == 0`或 `df.isEmpty`?

    apache-spark - 具有单个源的多个接收器的结构化流

    sql - Spark导入数据时如何设置分区/节点数

    apache-spark - 加入两个连接键不同的DataFrames,只选择一些列

    apache-spark - 如何使用 SPARK 将多个 parquet 文件转换为 TFrecord 文件?

    azure - 将自定义参数添加到 Azure 数据工厂部署

    scala - 如何在 Spark 中并行化 RDD/DataFrame 创建?

    databricks - 如何使用 Databricks dbutils 从文件夹中删除所有文件

    databricks - 数据湖屋和三角洲湖有什么区别?