instr(str, substr)
Описание
Функция instr()
возвращает позицию первого вхождения подстроки в строке. Позиции нумеруются с 1. Если подстрока не найдена, возвращает 0.
Параметры
str
: string или Column - строка, в которой ищется подстрокаsubstr
: string или Column - подстрока для поиска
Возвращаемое значение
Integer - позиция первого вхождения подстроки (начиная с 1) или 0, если подстрока не найдена
Пример использования
from pyspark.sql.functions import instr
# Создаем 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",
instr("text", "substring").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
- Функция полезна для поиска позиций подстрок
- Для поиска с конца строки используйте
locate()
с параметром pos - Для поиска всех вхождений используйте
regexp_count()