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;