0

我将一些 SQL 查询存储在表中的一varchar列中。然后我在我的 Birts Reports 数据集中执行它们,没关系,但有时我需要检查 SQL 查询,但是当我从 SQL 编辑器复制时,我会在一行中得到查询。我想知道如何获取该列并给出一些缩进,就像它被插入到表中之前一样。

4

3 回答 3

1

试试我们的免费在线工具 - SQL Formatter

于 2013-06-04T17:10:22.307 回答
1

我过去使用过这个工具,效果很好:

http://www.dpriver.com/pp/sqlformat.htm

于 2013-06-04T15:38:01.827 回答
0

我在T-SQL_Exceeding_the_8000_Byte_Limit_of_the_PRINT_Statement找到了这个 sp

-- Works around the 4000/8000 character limit of the print statement
CREATE PROCEDURE dbo.LongPrint( @string nvarchar(max) )
AS
SET NOCOUNT ON

set @string = rtrim( @string )

declare @cr char(1), @lf char(1)
set @cr = char(13)
set @lf = char(10)

declare @len int, @cr_index int, @lf_index int, @crlf_index int, @has_cr_and_lf bit, @left nvarchar(4000), @reverse nvarchar(4000)
set @len = 4000

while ( len( @string ) > @len )
begin
   set @left = left( @string, @len )
   set @reverse = reverse( @left )
   set @cr_index = @len - charindex( @cr, @reverse ) + 1
   set @lf_index = @len - charindex( @lf, @reverse ) + 1
   set @crlf_index = case when @cr_index < @lf_index then @cr_index else @lf_index end
   set @has_cr_and_lf = case when @cr_index < @len and @lf_index < @len then 1 else 0 end
   print left( @string, @crlf_index - 1 )
   set @string = right( @string, len( @string ) - @crlf_index - @has_cr_and_lf )
end

print @string

它的功能非常好..

于 2013-06-04T16:17:00.577 回答