MS SQL удаляет все перед числом

Я пытаюсь написать какой-то код, который удаляет все после первого числа, которое появляется в предложении.

Так что, если поле E1W

Я хочу вернуть только E, то же самое, если это EP4, просто вернуть EP. Я пробовал различные подстроки, положить charindex и patindexs не может сделать это правильно.

2 ответа

PATINDEX помогает:

SELECT Left(field, PatIndex('%[0-9]%', field + '1') - 1)

field + '1' позволяет избежать ошибки, если в поле нет цифры.

Вы могли бы использовать PATINDEX:

SELECT *,
       LEFT(s,IIF(PATINDEX('%[0-9]%',s)>0,PATINDEX('%[0-9]%',s)-1,0))
FROM (SELECT 'E1W' AS s 
      UNION SELECT 'EP4' 
      UNION SELECT 'ABC') z;

Rextester Demo

Другие вопросы по тегам