关于set 一点疑问

sw4419 2008-07-02 11:29:16
原来的SQL为:
select '合计'=sum(case when PH='90#' then SPSL else 0 end) from tblXSSQB
现在需要拼接SQL

declare @sql varchar(50)
set @sql='select '合计'=sum(case when PH='90#' then SPSL else 0 end) from tblXSSQB '
exec(@sql)

对于这样拼接含字符的SQL,会出错,请解释下出错的原因,以及解决的方案。谢谢。
...全文
52 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiuxianmajia 2008-07-02
  • 打赏
  • 举报
回复
楼上都正解
SQL语法里的字符串的边界符为单引号,比如
'ABC'
如果字符串本身有单引号,就用两个单引号表示,比如
'ABC''DEF'
实际要表示的是
ABC'DEF

VB也是这样的。VB用双引号做边界符,如果字符串中出现双引号,就表示为
"ABC""DEF"
arrow_gx 2008-07-02
  • 打赏
  • 举报
回复
改成这样就可以了

declare   @sql   varchar(50)
set @sql='select ''合计''=sum(case when PH=''90#'' then SPSL else 0 end) from tblXSSQB '
exec(@sql)
arrow_gx 2008-07-02
  • 打赏
  • 举报
回复
declare   @sql   varchar(50)
set @sql='select ''合计''=sum(case when PH=''90#'' then SPSL else 0 end) from tblXSSQB '
exec(@sql)


少了 ' 符号,你看看 '(单引号)的用法吧

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧