我用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语句,都是自动换行的,如何设置可以不换行?的主要内容,如果未能解决你的问题,请参考以下文章
sqlserver 2008 的跟踪器-sql server profiler,里面的内嵌视图exec sp_prepexec @p1 output