2016-04-15 3 views
0

Мне нужно общее решение для извлечения xyz части из строки в SQL Server.Общее решение для извлечения строки xyz строки в SQL Server

Я извлекая CLI от входа (например: CLI = 2138132):

глотка: [email protected]

В:

CASE WHEN F.ANI = 'null' THEN ' ' 
    ELSE SUBSTRING(F.ANI,(CHARINDEX(':',F.ANI) + 1),(CHARINDEX('@', F.ANI)-5)) END AS 'CLI', 

на некоторое время он работал нормально, но вчера я заметил некоторую ошибку в моих хранимых процедурах, потому что автоматическая машина IVR теперь является givi ng me неверный формат ввода.

Kindly review attached screenshot for your reference

+0

Что означает '= 'null''mean? Сохранено ли значение символа «null»? – jarlh

+0

Да, когда-нибудь я получаю null от приложения, чтобы обработать это. Я использовал это условие. – BilalAhmed

+0

Итак, вы получаете «null» или «null»? –

ответ

0

Вот один общее решение. В зависимости от вашей индексации, это может быть быстрее или медленнее, чем @ JaydipJ предлагает использовать REPLACE для устранения msml=.

CASE WHEN F.ANI = 'null' THEN ' ' 
    ELSE SUBSTRING(F.ANI,PATINDEX('%[0-9]%',F.ANI),(CHARINDEX('@', F.ANI)-PATINDEX('%[0-9]%',F.ANI))) END AS 'CLI' 

Это использует PATINDEX найти первый экземпляр числового символа. В сценарии не будет работать, если ваши данные содержат числа в разделе в начале строки, которую вы хотите игнорировать.

Смежные вопросы