Поделиться через


SEARCH

применяется:вычисляемый столбецвычисляемой таблицыизмерениевизуального вычисления

Возвращает число символов, в которых сначала найдена определенная символьная или текстовая строка, считывающая слева направо. Поиск не учитывает регистр и учитывает акцент.

Синтаксис

SEARCH(<find_text>, <within_text>[, [<start_num>][, <NotFoundValue>]])

Параметры

Термин Определение
find_text Текст, который требуется найти.

Можно использовать подстановочные знаки — вопросительный знак (?) и звездочку (*) в find_text. Вопросительный знак соответствует любому одному символу; звездочка соответствует любой последовательности символов. Если вы хотите найти фактический вопросительный знак или звездочку, введите тильду (~) перед символом.
within_text Текст, в котором требуется искать find_text, или столбец, содержащий текст.
start_num (необязательно) Позиция символа в within_text, с которой требуется начать поиск. Если опущено, 1.
NotFoundValue (необязательно, но настоятельно рекомендуется) Значение, которое должно быть возвращено, если операция не находит соответствующую подстроку, обычно 0, -1 или BLANK(). Если не указано, возвращается ошибка.

Возвращаемое значение

Число начальной позиции первой текстовой строки из первого символа второй текстовой строки.

Замечания

  • Функция поиска не учитывает регистр. Поиск "N" находит первое вхождение "N" или "n".

  • Функция поиска учитывает акцент. Поиск "á" найдет первое вхождение "á", но никаких вхождения "a", "à" или прописных версий "A", "Á".

  • Функцию SEARCH можно использовать для определения расположения символа или текстовой строки в другой текстовой строке, а затем использовать функцию MID для возврата текста или использовать функцию REPLACE для изменения текста.

  • Если find_text не удается найти в within_text, формула возвращает ошибку. Это поведение похоже на Excel, которое возвращает #VALUE, если подстрока не найдена. Значения NULL в within_text будут интерпретированы как пустая строка в этом контексте.

  • Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).

Пример

Следующий DAX запрос находит позицию первой буквы цикла в строке, содержащей имя торгового посредника. Если он не найден, возвращается пустое значение.

SEARCH не учитывает регистр. В этом примере, если "cycle" или "Cycle" используется в аргументе find_text, результаты возвращаются в любом случае. Используйте FIND для учета регистра.

Примеры в этой статье можно использовать с примером модели Adventure Works DW 2020 Power BI Desktop. Сведения о получении модели см. в разделе DAXпримера модели.

EVALUATE
CALCULATETABLE (
    ADDCOLUMNS (
        TOPN ( 10, SUMMARIZE('Reseller', [Reseller], [Business Type])),
        "Position of cycle", SEARCH ( "cycle", 'Reseller'[Reseller], 1, BLANK () )
    ),
    'Reseller'[Business Type] IN { "Specialty Bike Shop", "Value Added Reseller", "Warehouse"}
)

Возвращает

Reseller Business Type Position of cycle
Volume Bike Sellers Склад
Mass Market Bikes Добавленный торговый посредник по значению
Twin Cycles Добавленный торговый посредник по значению 6
Rich Department Store Склад
Rental Gallery Специализированный магазин велосипедов
Budget Toy Store Склад
Global Sports Outlet Склад
Online Bike Catalog Склад
Шлемы и циклы Добавленный торговый посредник по значению 13
Jumbo Bikes Специализированный магазин велосипедов

FIND REPLACE функции текста