我用Sqlserver2008查询时生成的Sql语句,都是自动换行的,如何设置可以不换行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用Sqlserver2008查询时生成的Sql语句,都是自动换行的,如何设置可以不换行?相关的知识,希望对你有一定的参考价值。

我用Sqlserver2008查询时生成的Sql语句,都是自动换行的,如何设置可以不换行?
因为我想直接在表名上右键查询top1000,然后生成带成员的sql语句,直接在vs里使用,但是现在总是要一个一个的去删除中间的空格和换行符,因为是软件,字段太多了,每次好麻烦,不知如何设置可以自动生成一行的sql语句,我可以直接用?
我自己写过一个小软件,自动删除空格和换行符,但是总感觉也不是很方便,求高手指点。

就像是该图中自动生成的sql语句,让他变成一整行,而不是这样分行的。因为在vs里使用时必须变成一行。

用EditPlus,

选中你要合并行的代码,执行合并行,即可(notepad++这类工具都有这个功能)


在sql里面你也可以用sql直接处理,

declare @a varchar(max)
set @a = 'SELECT TOP 1000 [id]
      ,[canceltype]
      ,[pername]
      ,[peroaid]
      ,[Itemid]
      ,[itemtype]
      ,[itemname]
      ,[sum]
  FROM [test].[dbo].[vwbom_cancel]' 
   
select REPLACE(@a,CHAR(13),'')  

在sql里面我通常用后面的方法,在VS中(写好的html弄成字符串)用EditPlus处理。

追问

哦,就相当于说必须用第三方工具,来替换掉里面的空格和换行符才行是吧?sql本身无法定义文本编辑器里的内容自动不生成换行符。
我之前自己写过一个工具,自动替换换行符,但是总感觉不太方便,所以希望可以自动生成的就是不带换行的,sql server是没有这个功能?

追答

应该没有吧,这个不清楚,从来没研究过,不知道你是什么应用场景,实在需要就自己写个插件呗

参考技术A 这个没有办法。
你可以自己写一个存储过程,根据表名生成查询语句的功能。

create procedure get_sql (@table_name varchar(100))
as
begin
declare @sql varchar(1000)

set @sql = ' select '

select @sql = @sql + a.name + ',' from sys.all_columns a,sys.all_objects b
where a.object_id = b.object_id and b.name = @table_name

set @sql = left(@sql,LEN(@sql) - 1 )

set @sql = @sql + ' from ' + @table_name

print @sql

end

SQLServer执行计划生成方式

说一点关于SQLServer 执行计划相关的东西吧,首先我不是DBA,这几年也做了一些关于SQL优化的东西,有一点自己理解的东西,说的不一定正确。 首先从应用程序传过来的T-SQL语句和存储过程的差异就是传过来的语句SQLServer会进行一次编译,而存储过程则是编译好的,执行时无需再次编译,等于就是一次编译多次执行,而传过来的SQL语句如果不是参数化查询的话不同的条件会生成不同的执行计划,举个栗子:SELECT * FROM dbo.Employee  WHERE ID = 1和 SELECT * FROM dbo.Employee  WHERE ID = 2 则会生成两个执行计划,等于说会把条件也作为语句存入到执行计划中,如果改为参数化查询就会只产生一个执行计划,下次在访问直接复用,之前项目中碰到过一次,由于是老项目,都是在程序中拼接SQL,时间长了就发现明明数据量不大的查询却要执行好久,通过跟踪才发现原来是执行计划存储的表过大,造成每次访问时先取相应的执行计划,从而造成性能上的浪费。

以上是关于我用Sqlserver2008查询时生成的Sql语句,都是自动换行的,如何设置可以不换行?的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句查询特定时间段的数据怎么写

sqlserver2005,要做个时间表

sqlserver 2008 的跟踪器-sql server profiler,里面的内嵌视图exec sp_prepexec @p1 output

在sql server 2008中如何查询本日、本周和本月数据

连接到SQL Server 2008:错误18452

SQLServer2008 生成SQL文件