我是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)
请帮助。谢谢
答案 0 :(得分:3)
您可以使用如下所示的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
的检查条件