Sql server 使用SQL查询提取可变长度字符串
我有一个名为Details的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开始计数。我怀
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)