T-SQL - 如何删除特定字符左侧的文本

时间:2017-05-13 19:39:37

标签: sql-server tsql

我有一个表格,它以下面的格式返回变量字符串长度:

Example Text: More example text

如何删除冒号和冒号之前的所有文本,只留下冒号右侧的文本,因此我的结果是:

More example text

右边的文字可以是任意长度。

由于

3 个答案:

答案 0 :(得分:2)

您可以使用CHARINDEX查找冒号的索引,然后使用RIGHT仅对您想要的文本进行子串:

DECLARE @text VARCHAR( MAX ) = 'Example Text: More example text'

PRINT RIGHT( @text, LEN( @text ) - CHARINDEX( ':', @text ) ) 

-- Prints " More example text"

要删除前导空格,您可以LTRIM输出:

PRINT LTRIM( RIGHT( @text, LEN( @text ) - CHARINDEX( ':', @text ) ) )

-- Prints "More example text"

答案 1 :(得分:2)

您可以使用SUBSTRINGCHARINDEXLTRIM

DECLARE @Str VARCHAR( MAX ) = 'Example Text: More example text'

SELECT  SUBSTRING(@Str , CHARINDEX(':',@Str)+1 , LEN(@Str)) With_Space,
LTRIM(SUBSTRING(@Str , CHARINDEX(':',@Str)+1 , LEN(@Str))) Without_Space

Demo

答案 2 :(得分:0)

这是对我有用的答案。 Script.Topic是列名:

SELECT RIGHT('{Script.Topic}', len('{Script.Topic}') - charindex(':', '{Script.Topic}'))