1

我正在调试一些大而杂乱的 SQL 过程,它们往往有很多嵌套的括号:

SELECT * FROM (SELECT F1,F2 FROM TABLE1 AS X LEFT JOIN 
(SELECT F9,F8 FROM (SELECT F13,F14 FROM TABLE4) AS J INNER JOIN TABLE3 ON...) AS B 
ON X.F1=B.F9) AS X1

我正在寻找一个可以自动标记并可选择折叠/折叠每个括号集以方便阅读的编辑器,例如

SELECT * FROM ... AS X1

SELECT * FROM (SELECT F1,F2 FROM TABLE1 AS X LEFT JOIN ... AS B ON X.F1=B.F9) AS X1

我可以在 Visual Studio 中通过反复按 ctrl-shift-] 来选择一组,然后按 ctrl-mh 来折叠它。但是其中一些内容长达数百行,如果我有一个可以自动标记整个文档的编辑器,那就太好了。

有什么建议么?

4

4 回答 4

1

我不认为它会做你的折叠,但如果你使用的是 SQL Server,我强烈推荐SQL Prompt,它包含一个重新格式化 SQL 的命令。在调试/理解庞大而笨拙的存储过程时,我发现这是一个巨大的帮助。

于 2009-11-06T12:55:46.250 回答
1

请参阅Emacs 的HideShow 模式,这正是您在 lisp 模式中想要的。

于 2010-12-01T01:10:43.737 回答
1

我需要做类似的事情。我发布了征求意见和建议的请求(您可以说是 RFC)。它的链接在这里:Stack Overflow。我很惊讶它在大多数编辑器中不是标准功能。我想问题在于从字符流中解析分隔的文本块比看起来更难。也许 XML 和 CSS 将来会更容易做精简类型的事情。

于 2010-09-13T16:04:40.000 回答
0

编辑:没关系,它不起作用。)没有被视为接近。留下答案,以免其他人浪费时间尝试。

如果您愿意拆分行,以便一行上只有一个左括号或右括号,您可以使用 Notepad++ 中的用户定义语言并分别打开和关闭文件夹()您还可以定义 SQL 关键字和注释分隔符,以便它们着色。Notepad++ 当然内置了 SQL,但内置定义不会折叠在括号上。

于 2010-09-13T16:35:47.923 回答