使用SQL查询提取可变长度字符串

时间:2015-05-19 16:15:41

标签: sql-server database

我有一个名为&#34的SQL数据库列;详细信息"总是遵循模式

AAA (BBB, DD-MM-YYYY, CCC);

其中A,B和C可以是任何长度。我提取BBB的查询是

SELECT    
[Number]=substring([Details], patindex('% (%', [Details])+2,patindex('% (%, %',[Details]))
FROM tablename

但是,我遇到了让查询停在正确位置的问题。它每次返回8个字符,从BBB的开始算起。我怀疑我在查询中使用了第二个PATINDEX函数会对此产生影响,但是我不确定我可以使用哪些函数或参数。

2 个答案:

答案 0 :(得分:0)

这样的事情怎么样:

select substring(
    details, 
    charindex('(', details) + 1, 
    charindex(',', details) - charindex('(', details) - 1)

答案 1 :(得分:0)

您可以使用PARSENAMECHARINDEX的组合来查找字符串:

SELECT RIGHT(PARSENAME(REPLACE([Details],',','.'),3),CHARINDEX('(',REVERSE(PARSENAME(REPLACE([Details],',','.'),3)))-1)