Как использовать Charindex для того или иного персонажа - PullRequest
1 голос
/ 07 февраля 2020

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

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

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

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

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

Спасибо !!!

Ответы [ 2 ]

4 голосов
/ 07 февраля 2020

Используйте patindex():

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

Или, если хотите, чтобы первый не-ди git:

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

Здесь - это дБ <> скрипка.

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

3 голосов
/ 07 февраля 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;

DEMO

...