我遇到了子串。
在输入时,我有一个看起来像Sometext (123456)
的字符串。最后的那些数字是随机的。我只需要从该字符串中获取文本。
答案 0 :(得分:10)
这个怎么样?
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
答案 1 :(得分:4)
如果我们想删除句子并保留我们可能会这样做的数字。
DECLARE @Text VARCHAR(MAX);
SET @Text = 'Sometext (123456)'
SELECT SUBSTRING(@Text, CHARINDEX(' ', @Text) + 1, LEN(@Text)) As TextOutput
结果将是:(123456)
答案 2 :(得分:3)
它确实取决于输入字符串的格式,但是使用PATINDEX的方法略有不同,它将返回字符串,直到它与非A-Z字符匹配:
declare @text varchar(500); set @text = 'Sometext (123456)'
select SUBSTRING(@text, 0, PATINDEX('%[^A-Z]%' , @text))
答案 3 :(得分:1)
如果你只想让第一部分达到'('你可以尝试
declare @t varchar(50)
set @t = 'function (12343)'
select rtrim(substring(@t,1, charindex('(', @t)-1))