SQL Substring和Last索引

时间:2010-05-27 09:00:08

标签: sql sql-server

我遇到了子串。

在输入时,我有一个看起来像Sometext (123456)的字符串。最后的那些数字是随机的。我只需要从该字符串中获取文本。

4 个答案:

答案 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))