Sql 选择X的子字符串,其中X的子字符串等于特定字符

Sql 选择X的子字符串,其中X的子字符串等于特定字符,sql,sql-server,Sql,Sql Server,我正在努力通过当前尝试的SQL查询返回到所需的数据 我最接近的是下面的SQL 从查找中选择子字符串路径Y+1200 其中,从查找中选择子字符串路径Y,1=':' 01测试此字符串:金融和税务:欧洲:荷兰:Live 方案和项目 02某物:管理节目和项目:亚洲:尼泊尔:直播节目和项目 说明:上面几行显示了我存储在表中的数据结构,它表示一个文件夹结构,其中每个级别由冒号分隔。在上面的示例中,我需要找到长度为Y的substr,例如使用上面02的数据,我使用 > SELECT SUBSTRING(p

我正在努力通过当前尝试的SQL查询返回到所需的数据

我最接近的是下面的SQL

从查找中选择子字符串路径Y+1200 其中,从查找中选择子字符串路径Y,1=':'

01测试此字符串:金融和税务:欧洲:荷兰:Live 方案和项目

02某物:管理节目和项目:亚洲:尼泊尔:直播节目和项目

说明:上面几行显示了我存储在表中的数据结构,它表示一个文件夹结构,其中每个级别由冒号分隔。在上面的示例中,我需要找到长度为Y的substr,例如使用上面02的数据,我使用

> SELECT SUBSTRING(path, 13, 1) FROM lookup WHERE *character* = ':'
其中它与字符“:”匹配,这对于02条目是正确的,但对于01条目不是。现在我需要返回该表中从位置Y+1开始的所有substr表达式,例如使用

> SELECT SUBSTRING(path, 13 + 1, 200) FROM lookup
这是回报

is字符串:金融和税务:欧洲:荷兰:直播节目和 计划

管理节目和项目:亚洲:尼泊尔:直播节目和 计划

但我只希望第一个表达式的结果为真,其中位置13处的字符=':'因此在本例中,我只希望返回第二行数据

非常感谢您的帮助。

像这样试试

SELECT SUBSTRING(path, Y + 1, len(path)) -- Instead of 200 use Len() function
FROM lookup 
where SUBSTRING(path, Y, 1) = ':' -- Replace Y with position

听起来你想把第一个冒号之后的所有东西都返回,不管它在哪里。以下是如何做到这一点:

SELECT SUBSTRING(path, CHARINDEX(':', path) + 1, len(path)) as after_first_colon
FROM lookup

你能提供样品输出吗?前后可能有4或5排?很有魅力。花了好几个小时。谢谢