Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 使用SQL查询提取可变长度字符串_Sql Server_Database - Fatal编程技术网

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

Sql server 使用SQL查询提取可变长度字符串,sql-server,database,Sql Server,Database,我有一个名为Details的SQL数据库列,它始终遵循这种模式 AAA (BBB, DD-MM-YYYY, CCC); 其中A、B和C可以是任意长度。我对提取BBB的查询是 SELECT [Number]=substring([Details], patindex('% (%', [Details])+2,patindex('% (%, %',[Details])) FROM tablename 但是,我在让查询停止在正确的位置时遇到了问题。它每次返回八个字符,从BBB开始计数。我怀

我有一个名为Details的SQL数据库列,它始终遵循这种模式

AAA (BBB, DD-MM-YYYY, CCC);
其中A、B和C可以是任意长度。我对提取BBB的查询是

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

但是,我在让查询停止在正确的位置时遇到了问题。它每次返回八个字符,从BBB开始计数。我怀疑是我在查询中使用的第二个PATINDEX函数影响了这一点,但是我不确定我可以使用哪些函数或参数来代替它。

类似这样的情况如何:

select substring(
    details, 
    charindex('(', details) + 1, 
    charindex(',', details) - charindex('(', details) - 1)
您可以使用PARSENAME和CHARINDEX的组合来查找字符串:

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