String 从sql中的字符串查找子字符串
我正在使用SQL SERVER 2008。我在SQL中有以下字符串String 从sql中的字符串查找子字符串,string,sql-server-2008,tsql,find,substring,String,Sql Server 2008,Tsql,Find,Substring,我正在使用SQL SERVER 2008。我在SQL中有以下字符串 DECLARE @stringRTF VARCHAR(MAX) set @stringRTF = '{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} \viewkind4\uc1\pard\f0\fs18 \v [\TEST\*#70_250_263] \v0 \par ' 现在我想从上面的字符串中找到字符串“\TE
DECLARE @stringRTF VARCHAR(MAX)
set @stringRTF = '{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} \viewkind4\uc1\pard\f0\fs18 \v [\TEST\*#70_250_263] \v0 \par '
现在我想从上面的字符串中找到字符串“\TEST*#”。
如果它存在于完整字符串中,那么我想从完整字符串中剪切字符串[\TEST*#70_250_263]
所以它应该是返回式的
[\TEST\*#70_250_263]
作为返回字符串
有谁能帮我找到并从原始字符串中剪下那个字符串吗
提前感谢。我认为下面的代码应该可以工作:
DECLARE @stringRTF VARCHAR(1000), @stringFind VARCHAR(30), @startIndex
int,@outputString varchar(100)
set @stringRTF = '{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} \viewkind4\uc1\pard\f0\fs18 \v [\TEST\*#70_250_263] \v0 \par '
SET @stringFind = '\TEST\*#'
SET @startIndex = CHARINDEX(@stringFind, @stringRTF) - 1
SET @outputString = SUBSTRING(@stringRTF , @startIndex, len(@stringRTF))
SET @outputString = LEFT(@outputString , CHARINDEX(']',@outputString) )
PRINT @outputString --Your result
如果遇到任何错误,请告诉我。我认为以下代码应该可以工作:
DECLARE @stringRTF VARCHAR(1000), @stringFind VARCHAR(30), @startIndex
int,@outputString varchar(100)
set @stringRTF = '{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} \viewkind4\uc1\pard\f0\fs18 \v [\TEST\*#70_250_263] \v0 \par '
SET @stringFind = '\TEST\*#'
SET @startIndex = CHARINDEX(@stringFind, @stringRTF) - 1
SET @outputString = SUBSTRING(@stringRTF , @startIndex, len(@stringRTF))
SET @outputString = LEFT(@outputString , CHARINDEX(']',@outputString) )
PRINT @outputString --Your result
如果遇到任何错误,请告诉我。试试这个-
DECLARE @stringRTF VARCHAR(1024)
SELECT @stringRTF =
'{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} \viewkind4\uc1\pard\f0\fs18 \v [\TEST\*#70_250_263] \v0 \par '
DECLARE @res VARCHAR(100)
SELECT @res = SUBSTRING(
@stringRTF,
CHARINDEX('\TEST\*#', @stringRTF) - 1,
CHARINDEX(']', @stringRTF) - CHARINDEX('\TEST\*#', @stringRTF) + 2
)
PRINT @res
输出:
[\TEST\*#70_250_263]
@IT初学者,在代码中更改以下行:
'\TEST*#' to '\TEST\*#'
@stringRTF.length to LEN(@stringRTF)
试试这个-
DECLARE @stringRTF VARCHAR(1024)
SELECT @stringRTF =
'{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Tahoma;}} \viewkind4\uc1\pard\f0\fs18 \v [\TEST\*#70_250_263] \v0 \par '
DECLARE @res VARCHAR(100)
SELECT @res = SUBSTRING(
@stringRTF,
CHARINDEX('\TEST\*#', @stringRTF) - 1,
CHARINDEX(']', @stringRTF) - CHARINDEX('\TEST\*#', @stringRTF) + 2
)
PRINT @res
输出:
[\TEST\*#70_250_263]
@IT初学者,在代码中更改以下行:
'\TEST*#' to '\TEST\*#'
@stringRTF.length to LEN(@stringRTF)
你用什么?SQL SERVER 2008?@IT初学者我正在使用SQL SERVER 2008。您可以使用LIKE或REGEXP(如“WHERE字段LIKE”%[\TEST*\70\u 250\u 263]”或“WHERE字段REGEXP‘TEST’”)然后在代码中实际执行提取,也可以使用PREG\u捕获,如下所示:(如果您使用的是MySQL。MSSQL可能支持像Oracle这样的REGEXP\u SUBSTR。您使用什么?SQL SERVER 2008?@IT初学者我使用的是SQL SERVER 2008。您可以使用like或REGEXP(如“WHERE字段,如“%[\TEST*\70\u 250\u 263]”或“WHERE字段REGEXP‘TEST’”)然后在代码中实际执行提取,或者可以使用PREG_CAPTURE,如下所示:(如果您使用的是MySQL。MSSQL可能支持像Oracle这样的REGEXP_SUBSTR。很好。我的答案不知道问题出在哪里。@IT初学者,很乐意帮助您。为了减少语法错误,请尝试使用任何自动完成工具б如下:很好。我的答案不知道问题出在哪里。@IT初学者,很高兴帮助您。为了尝试使用自动完成工具б的语法错误更少,如下所示: