我有一个字符串“ Create Procedure Test”。请在下面找到我的要求:
1-我必须找到字符串“ Procedure”。
2-之后,我要搜索字符串Procedure之后的接下来的5个字符中是否存在特定的字符串“ dbo”。
3-如果dbo不存在,我想连接一个字符串,在字符串Test之前说MySchema。
有什么建议
IF
具有一些简单计算的常规应该满足您的需求;
DECLARE @input NVARCHAR(MAX) = 'Create Procedure Test'
DECLARE @keyword NVARCHAR(MAX) = 'Procedure'
DECLARE @inject NVARCHAR(MAX) = 'MySchema.'
DECLARE @index BIGINT = CHARINDEX(@keyword, @input)
DECLARE @dboindex BIGINT = CHARINDEX('dbo', @input, @index)
IF @dboindex < 1 OR @dboindex - @index - LEN(@keyword) > 5
BEGIN
SET @input = STUFF(@input, @index + LEN(@keyword) + 1, 0, @inject)
END
SELECT @input
CHARINDEX
会找到您要查找的字符串在原始字符串中的位置,如果位置相差5或更小(或dbo
根本不存在),它将用于STUFF
在“过程”之后将新字符串注入到固定位置。
您可能想随便增加一些公差,例如,当前它仅在“过程”之后只处理一个空格。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句