я застрял с подстрокой.
На входе у меня есть строка, которая похожа Sometext (123456)
. Те цифры в конце случайны. Я должен получить только текст от той строки.
Как насчет этого?
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
Это действительно зависит от формата вашей входной строки, но вот немного другой подход, использующий PATINDEX, который будет возвращать строку до тех пор, пока она не совпадет с символом не A-Z:
declare @text varchar(500); set @text = 'Sometext (123456)'
select SUBSTRING(@text, 0, PATINDEX('%[^A-Z]%' , @text))
Если вам нужна только первая часть до '(', вы можете попробовать
declare @t varchar(50)
set @t = 'function (12343)'
select rtrim(substring(@t,1, charindex('(', @t)-1))