Я пытаюсь создать запрос для извлечения десятизначной строки из большей строки. Эта строка будет состоять из двух символов, за которыми следуют 8 цифр, например, 'EL12345678'
. Ранее я использовал следующий запрос, где переменная @prefix может состоять из любых двух символов. Однако я сталкивался с некоторыми случаями, когда эти символы используются в других местах строки, заставляя ее извлекать неправильный код.
SELECT SUBSTRING(message_key, (SELECT CHARINDEX(@prefix, message_key)), 10) AS pcn,
Message_ID
FROM MQ
WHERE Message_Status != 'processed'
AND Message_Status != 'bad'
AND message_status != 'new'
AND Message_Time > DATEADD(DAY, -@days, dbo.dateonlyVB())
AND Message_MethodName = CASE WHEN @prefix = 'DN' THEN 'SaveJob' ELSE 'savedetails' END;
Я пытался использовать patindex и некоторые символы подстановки, чтобы проверить, могу ли я указать, что это былочисло, которое следует за переменной, но, похоже, это не сработало, когда я попробовал.
Я ожидаю, что он сможет извлечь строку типа «EL12345678» из строки большего размера, которая может быть где угоднов области более 300 символов. Однако мой запрос в настоящее время иногда извлекает строки типа 'elValvef': 'вместо этого.
Любая помощь с этим вообще будет принята с благодарностью!