我有一个字符串如下,并假设“。”始终存在于字符串中。
'NAB 12345 Tom Heading abcde@yahoo.com.au Web 20294821. Australia Regular Post'
如何使用TSQL从上面的字符串中删除20294821?
我尝试了以下内容,但只有在数字是字符串中的最后一个字
时才有效REPLACE(REVERSE( LEFT( REVERSE(Comments), CHARINDEX(' ', REVERSE(Comments))-1 ) ) ,'.','')
-Alan -
答案 0 :(得分:1)
你也可以如下:
DECLARE @Comments as VARCHAR(255) = 'NAB 12345 Tom Heading abcde@yahoo.com.au Web 20294821. Australia Regular Post'
SELECT REPLACE(@Comments, LEFT(RIGHT(@Comments, LEN(@Comments) - CHARINDEX('Web ', @Comments, 0) - 3), CHARINDEX('.', RIGHT(@Comments, LEN(@Comments) - CHARINDEX('Web ', @Comments, 0) - 3), 0) - 1), '')
答案 1 :(得分:0)
由于可能的字符串模式不确定,我在此基于您想要删除最右边的点.
和最左边的最近空间之间的字符串的假设来回答这个问题。 dot
。
DECLARE @Comments VARCHAR (MAX)
SET @Comments = 'NAB 12345 Tom Heading abcde@yahoo.com.au Web 20294821. Australia Regular Post'
DECLARE @Comments_TrimmedContent VARCHAR (MAX)
DECLARE @Comments_TrimmedAfterDot VARCHAR (MAX)
SELECT @Comments_TrimmedContent = REVERSE( LEFT( REVERSE(@Comments), CHARINDEX('.', REVERSE(@Comments)) ))
SELECT @Comments_TrimmedAfterDot = REVERSE( RIGHT( REVERSE(@Comments), LEN(@Comments) - CHARINDEX('.', REVERSE(@Comments)) - 1 ))
SELECT REVERSE( RIGHT ( REVERSE(@Comments_TrimmedAfterDot), LEN(@Comments_TrimmedAfterDot) - CHARINDEX(' ', REVERSE(@Comments_TrimmedAfterDot)))) + @Comments_TrimmedContent
输出:
NAB 12345 Tom Heading abcde@yahoo.com.au Web. Australia Regular Post
答案 2 :(得分:0)
最后一行有最终答案,但我已经分解了使事情变得更加连贯的步骤。
它返回第一个Web空间和句号之间的值。
DECLARE @Comments as VARCHAR(255)
SET @Comments = 'NAB 12345 Tom Heading abcde@yahoo.com.au Web 20294821. Australia Regular Post'
SELECT @Comments
-- Assume there is only one occurence of web and a space
SELECT CHARINDEX('Web ', @Comments)
--Show the substring starting from the number (skip for 4 characters for web and a space)
SELECT SUBSTRING(@Comments, CHARINDEX('Web ', @Comments) + 4, LEN(@Comments))
--Find the full stop after the web space
SELECT CHARINDEX('.', SUBSTRING(@Comments, CHARINDEX('Web ', @Comments) + 4, LEN(@Comments)))
--Combine all of the above logic to give the answer
SELECT SUBSTRING(@Comments, CHARINDEX('Web ', @Comments) + 4, CHARINDEX('.', SUBSTRING(@Comments, CHARINDEX('Web ', @Comments) + 4, LEN(@Comments)))-1)