Skip to content

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()
  • Функция полезна для поиска позиций подстрок в тексте