我正在努力用我目前尝试的SQL查询返回我需要的数据。
我最接近的是下面的SQL
SELECT SUBSTRING(path, Y + 1, 200) FROM lookup
WHERE (SELECT SUBSTRING(path, Y, 1) FROM lookup) = ':'
01测试此字符串:财务和税务:欧洲:荷兰:直播 计划和项目
02 Something:管理项目和项目:亚洲:尼泊尔:现场活动和项目
澄清:上面的行显示了我存储在表格中的数据结构,表示每个级别用冒号分隔的文件夹结构。在上面的例子中,我需要找到一些长度为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
返回
是字符串:财务和税务:欧洲:荷兰:现场节目和 项目
管理项目和项目:亚洲:尼泊尔:现场活动和项目 项目
但我只想要第13个位置的字符=':'的第一个表达式的结果为真,所以在这种情况下我只想要返回第二行数据。
非常感谢任何帮助。
答案 0 :(得分:2)
试试这个
SELECT SUBSTRING(path, Y + 1, len(path)) -- Instead of 200 use Len() function
FROM lookup
where SUBSTRING(path, Y, 1) = ':' -- Replace Y with position
答案 1 :(得分:0)
听起来你想要在第一个冒号之后返回所有内容,无论它在哪里。这是你如何做到的:
SELECT SUBSTRING(path, CHARINDEX(':', path) + 1, len(path)) as after_first_colon
FROM lookup