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