Как использовать Charindex для того или иного персонажа

У меня есть строка с кучей цифр, но она содержит одну букву где-то в центре строки. Эта буква может быть либо «A», либо «B». Я пытаюсь узнать позицию этой буквы с помощью функции Charindex(). Однако это не работает, когда у вас есть два параметра поиска:

select  charindex('[A,B]','190118A3700000')

Я попробовал это с диапазоном и подстановочными знаками, но это не сработало. Итак, я хочу, чтобы эти два отдельных запроса были объединены в один:

select  charindex('A','190118A3700000')
select  charindex('B','190118A3700000')

Кто-нибудь знает, как это сделать?

Спасибо!!!


person not_ur_avg_cookie    schedule 07.02.2020    source источник


Ответы (2)


Используйте 1_:

select patindex('%[A,B]%', '190118A3700000')

Или, если вам нужна первая нецифра:

select patindex('%[^0-9]%', '190118A3700000')

Вот скрипт db‹>.

charindex() не понимает подстановочные знаки.

person Gordon Linoff    schedule 07.02.2020

Если charindex не находит этот символ, он возвращает 0, поэтому все, что вам нужно сделать, это

select col, charindex('A', col) + charindex('B', col) as position
from your_table;

Другая альтернатива

select col, charindex('A', replace(col, 'B', 'A')) as position
from your_table;

ДЕМО

person Rajat    schedule 07.02.2020
comment
Я сразу подумал о PATINDEX и никогда бы не подумал о таком подходе. Не то, что я видел раньше. Прохладный. - person Sean Lange; 07.02.2020