locate(substr, str[, pos])
Описание
Функция locate()
возвращает позицию первого вхождения подстроки в строке, начиная с указанной позиции. Позиции нумеруются с 1. Если подстрока не найдена, возвращает 0.
Параметры
substr
: string или Column - подстрока для поискаstr
: string или Column - строка, в которой осуществляется поискpos
: integer (опционально) - позиция, с которой начинать поиск (по умолчанию 1)
Возвращаемое значение
Integer - позиция первого вхождения подстроки (начиная с 1) или 0, если подстрока не найдена
Пример использования
from pyspark.sql.functions import locate
# Создаем DataFrame
df = spark.createDataFrame([
("Hello World",),
("hello world",),
("HELLO WORLD",),
("Hello",),
("World",),
(None,)
], ["text"])
# Ищем позиции подстрок
df.select(
"text",
locate("llo", "text").alias("llo_position"),
locate("world", "text").alias("world_position"),
locate("o", "text", 5).alias("o_after_5")
).show()
# Результат:
# +-----------+------------+--------------+---------+
# | text|llo_position|world_position|o_after_5|
# +-----------+------------+--------------+---------+
# |Hello World| 3| 0| 5|
# |hello world| 3| 7| 5|
# |HELLO WORLD| 0| 0| 0|
# | Hello | 3| 0| 5|
# | World | 0| 1| 0|
# | null| null| null| null|
# +-----------+------------+--------------+---------+
Примечания
- Поиск чувствителен к регистру
- Позиции нумеруются с 1
- Если подстрока не найдена, возвращается 0
- Если любой из аргументов NULL, результат NULL
- Для поиска с конца строки используйте
instr()
- Для подсчета всех вхождений используйте
regexp_count()
- Функция полезна для поиска позиций подстрок в тексте