Подстрока SQL и Последний индекс

я застрял с подстрокой.

На входе у меня есть строка, которая похожа Sometext (123456). Те цифры в конце случайны. Я должен получить только текст от той строки.

7
задан Max Al Farakh 27 May 2010 в 09:00
поделиться

3 ответа

Как насчет этого?

DECLARE @Data TABLE (Val VARCHAR(20))
INSERT @Data VALUES ('Sometext (123456)')
INSERT @Data VALUES ('')
INSERT @Data VALUES (NULL)
INSERT @Data VALUES ('S(123456)')
INSERT @Data VALUES ('(123456)')

SELECT 
    CASE 
        WHEN CHARINDEX('(', Val) > 0 THEN 
            RTRIM(SUBSTRING(val,1, CHARINDEX('(', Val) - 1))
        ELSE Val
    END
FROM @Data
10
ответ дан 6 December 2019 в 09:58
поделиться

Это действительно зависит от формата вашей входной строки, но вот немного другой подход, использующий PATINDEX, который будет возвращать строку до тех пор, пока она не совпадет с символом не A-Z:

declare @text varchar(500); set @text = 'Sometext (123456)'
select SUBSTRING(@text, 0, PATINDEX('%[^A-Z]%' , @text))
3
ответ дан 6 December 2019 в 09:58
поделиться

Если вам нужна только первая часть до '(', вы можете попробовать

declare @t varchar(50)
set @t = 'function (12343)'

select rtrim(substring(@t,1, charindex('(', @t)-1))
2
ответ дан 6 December 2019 в 09:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: