教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
firefox火狐浏览器下载
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
精彩图库
  当前位置: 库库中文网 · 数据库类教程 · MSSQL教程 · MsSql综合技巧

sqlserver 怎么把字符串替换成列名称

学院最新推荐文章
教程推荐
『sqlserver 怎么把字符串替换成列名称』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2008-9-27 
象下面这段sql语句:
declare @strSQL nvarchar(1000)
declare @strSQLDef nvarchar(1000)
select @strSQL='
SELECT [QuotationItemID]
      ,[QuoteID]
      ,[ProductIdName]
      ,[PricePerUnit]
      ,[Tax]
      ,[Quantity]
      ,[ProductDescription]
  FROM [AaronDB].[dbo].[QuoteDetail]
order by @SortColumn @SortDirection
'
select @strSQLDef='@SortColumn nvarchar(50),@SortDirection nvarchar(20)'
print @strsql
exec sp_executesql @strSQL,@strSQLDef,'QuotationItemID','DESC'

报错:Incorrect syntax near '@SortDirection'.

像上面的这段sql,我想用参数的方式来执行列的排序,我该怎么做呢?(不想要那种字符串拼凑的办法)

这个问题第1个回答:
SQL code

declare   @strSQL   nvarchar(1000)

declare @SortColumn   nvarchar(50),@SortDirection   nvarchar(20)

select @SortColumn  = 'QuotationItemID',@SortDirection 'DESC'



select   @strSQL='

SELECT   [QuotationItemID]

            ,[QuoteID]

            ,[ProductIdName]

            ,[PricePerUnit]

            ,[Tax]

            ,[Quantity]

            ,[ProductDescription]

    FROM   [AaronDB].[dbo].[QuoteDetail]

order   by  '+@SortColumn+' '+@SortDirection



exec   sp_executesql   @strSQL




这个问题第2个回答:

这个问题第3个回答:
接分
这个问题第4个回答:
帮顶 ,接分
这个问题第5个回答:
是也
这个问题第6个回答:
像上面的这段sql,只有 拼接SQL字符串 然后执行
传递参数不行

要么就写一个存储过程 传递 字段名 与 排序规则进去
在纯属过程里拼接字符串 执行动态SQL 语句
这个问题第7个回答:
jf
这个问题第8个回答:
用动态SQL语句。


动态sql语句基本语法
1 :普通SQL语句可以用Exec执行

eg:  Select * from tableName
        Exec('select * from tableName')
        Exec sp_executesql N'select * from tableName'    -- 请注意字符串前一定要加N

2:字段名,表名,数据库名之类作为变量时,必须用动态SQL

eg: 
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName              -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName')    -- 请注意 加号前后的 单引号的边上加空格

当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名

declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s)                -- 成功
exec sp_executesql @s  -- 此句会报错


declare @s Nvarchar(1000)  -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s)                -- 成功   
exec sp_executesql @s  -- 此句正确

3. 输出参数
declare @num int,
        @sql nvarchar(4000)
set @sql='select count(*) from tableName'
exec(@sql)


--如何将exec执行结果放入变量中?

declare @num int, @sql nvarchar(4000)
set @sql='select @a=count(*) from tableName '
exec sp_executesql @sql,N'@a int output',@num output
select @num


这个问题第9个回答:
美好的CSDN
这个问题第10个回答:
SQL code



declare   @strSQL   nvarchar(1000) 

declare @SortColumn   nvarchar(50),@SortDirection   nvarchar(20)

set @SortColumn='QuotationItemID'

set @SortDirection='DESC' 



select   @strSQL='SELECT   [QuotationItemID] 

            ,[QuoteID] 

            ,[ProductIdName] 

            ,[PricePerUnit] 

            ,[Tax] 

            ,[Quantity] 

            ,[ProductDescription] 

    FROM   [AaronDB].[dbo].[QuoteDetail] 

order   by  '+ @SortColumn+' '+@SortDirection 

exec (@strSQL) 




这个问题第11个回答:
up
这个问题第12个回答:
我顶
这个问题第13个回答:
没看,悄悄的顶

作者:aarondai 来源:C.S.D.N
】【关闭窗口
·上页:
·下页:
相关文章
     数据库类教程 - MsSql综合技巧
普通教程【脑袋快想爆炸了- -!】 怎么样
普通教程关于级联删除地疑难,新手提问,
普通教程怎么样动态控制列数?
普通教程数据库恢复 MS2000
普通教程当数据库中varchar字段值为null
普通教程create function 怎么才无法要返
普通教程各位帮我看看是啥疑难啊, SQL运
普通教程SQL server 2005 安装疑难 SP2更
普通教程sql update
普通教程update触发器地疑难
普通教程字符串地查询疑难
普通教程安全性--登陆--想建一个用户tes
精彩图片汇集
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光