apache-spark-sql - 在spark sql中查找字符串中的字符索引
问题描述
我是 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 结果
推荐阅读
- python - 尝试使用python中的日历模块创建多维数组
- python - 如何在 GCloud App 上安装 SQLite 和 CORS 等模块
- r - 有没有办法从 R 中的一组父子关系中获取 BOM 样式输出(SAP CS12)?
- jpa - 在共享 JAR 的 persistence.xml 中使用 EAR 级定义的数据源作为 JTA 数据源
- reactjs - 使用 OnBlur 事件修剪 Draft.js 编辑器内容
- r - 如何导入带有闪亮的 csv 文件
- python-3.x - 将 Tensorflow 1.x 代码升级到 Tensorflow 2.x 代码
- python - 如何使用函数外部的烧瓶变量以供以后在javascript中使用?
- mysql - 从另一个表的聚合中触发更新其他表
- r - 如何在单个列的级别之间获得所有可能的成对比较?