Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server T-SQL-如何删除特定字符左侧的文本_Sql Server_Tsql - Fatal编程技术网

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

Sql server T-SQL-如何删除特定字符左侧的文本,sql-server,tsql,Sql Server,Tsql,我有一个表,它以下面的格式返回可变字符串长度: Example Text: More example text 如何删除冒号之前的所有文本和冒号,只将文本保留在冒号的右侧,从而得到以下结果: More example text 右边的文本可以是任意长度 谢谢您可以使用CHARINDEX查找冒号的索引,然后使用RIGHT将所需文本作为子字符串: DECLARE @text VARCHAR( MAX ) = 'Example Text: More example text' PRINT RIG

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

Example Text: More example text
如何删除冒号之前的所有文本和冒号,只将文本保留在冒号的右侧,从而得到以下结果:

More example text
右边的文本可以是任意长度


谢谢

您可以使用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"

您可以使用
SUBSTRING
CHARINDEX
LTRIM

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

.

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

SELECT RIGHT('{Script.Topic}', len('{Script.Topic}') - charindex(':', '{Script.Topic}'))
使用
LTRIM()
删除文档中“更多示例文本”的前导空格:“返回指定字符串表达式的字符数,不包括尾随空格。”隐藏
RTrim()
。是否可能“更多示例文本”有冒号?因此您想要
“更多示例文本”
是否有一个前导空格?