Найти индекс символа в строке в spark sql - PullRequest
2 голосов
/ 02 июля 2019

Я человек 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) 

Пожалуйста, помогите.Спасибо

1 Ответ

3 голосов
/ 02 июля 2019

Вы можете использовать функцию 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 результат для ложного условия
...