Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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 选择由相同特殊字符分隔的VARCHAR值部分_Sql_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

Sql 选择由相同特殊字符分隔的VARCHAR值部分

Sql 选择由相同特殊字符分隔的VARCHAR值部分,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我正在使用SQLServer2008R2 这是我拥有的价值: DECLARE @DBB varchar(200) = 'A2gg3h.B2g3ghh3.Cggh3663.D1jhg23.Eh2hjj2g' 返回两个外部值非常简单: SELECT LEFT(@DBB, CHARINDEX('.', @DBB)-1) SELECT RIGHT(@DBB, CHARINDEX('.', @DBB)-1) 如何更改脚本以选择值: 1. 'Bg2g3ghh3' 2. 'Chggh3663' 3. 'D

我正在使用SQLServer2008R2

这是我拥有的价值:

DECLARE @DBB varchar(200) = 'A2gg3h.B2g3ghh3.Cggh3663.D1jhg23.Eh2hjj2g'
返回两个外部值非常简单:

SELECT LEFT(@DBB, CHARINDEX('.', @DBB)-1)
SELECT RIGHT(@DBB, CHARINDEX('.', @DBB)-1)
如何更改脚本以选择值:

1. 'Bg2g3ghh3'
2. 'Chggh3663'
3. 'Dh1jhg23'
使用CHARINDEX只能返回(左)7和(右)9

谢谢你用这个

DECLARE @param NVARCHAR(MAX)
SET @param = 'A2gg3h.B2g3ghh3.Cggh3663.D1jhg23.Eh2hjj2g'

SELECT 
     Split.a.value('.', 'VARCHAR(100)') AS CVS  
FROM  
(
    SELECT CAST ('<M>' + REPLACE(@param, '.', '</M><M>') + '</M>' AS XML) AS CVS 
) AS A CROSS APPLY CVS.nodes ('/M') AS Split(a)
DECLARE@param NVARCHAR(最大值)
SET@param='A2gg3h.B2g3ghh3.Cggh3663.D1jhg23.Eh2hjj2g'
挑选
将.a.value('.','VARCHAR(100')拆分为CV
从…起
(
选择CAST(''+REPLACE(@param,'','')+''作为XML)作为CVS
)交叉应用CVS.nodes('/M')作为拆分(A)
试试这个:

DECLARE @string VARCHAR(MAX),
@Split CHAR(1),
@X xml
SELECT @string = 'A2gg3h.B2g3ghh3.Cggh3663.D1jhg23.Eh2hjj2g',
@Split = '.'
SELECT @X = CONVERT(xml,'<root><s>' + REPLACE(@string,@Split,'</s><s>') + '</s></root>')
SELECT T.c.value('.','varchar(max)') AS Result
FROM @X.nodes('/root/s') T(c)
DECLARE@string VARCHAR(MAX),
@分割字符(1),
@xml
选择@string='A2gg3h.B2g3ghh3.Cggh3663.D1jhg23.Eh2hjj2g',
@拆分='。'
选择@X=CONVERT(xml)、+REPLACE(@string、@Split)、)+“”)
选择T.c.值('.','varchar(max')作为结果
从@X.nodes('/root/s')T(c)

这是这么多问题的重复,在我看来,没有一个问题(在我看来)比阅读以下三篇文章能给你提供更好的答案:,只有当你100%确定输入永远不会包含