请教c# sql重复语句套接字符串

xiehuangda 2015-12-16 03:22:23
请教c# sql重复语句套接字符串

sql+=",(Case when a.Condition='1' and a.Grade='0' then Ceiling(Datediff(Minute,a.KaiTime,getdate())*b.sMoney/60) when a.Condition='1' and a.Grade>='1' then Ceiling(Datediff(Minute,a.KaiTime,getdate())*b.hMoney/60) End)As spMoney";//消费

c# 程序在sql查询中反复重复的字符串太麻烦了。有方法简化,使用字符串代入方法吗?

假如这样:
string sp="Ceiling(Datediff(Minute,a.KaiTime,getdate())*b.sMoney/60)";
sql+=",(Case when a.Condition='1' and a.Grade='0' then '"+sp+"' when a.Condition='1' and a.Grade>='1' then '"+sp+"' End)As spMoney";//消费

但是这样写提示错误,如果这个方法正确,可以节省好多重复的字符串。希望各位给出好方法。
...全文
91 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiehuangda 2015-12-16
  • 打赏
  • 举报
回复
在查询器中是测试不出来的。因为他是c#里的字符串 string sp="Ceiling(Datediff(Minute,a.KaiTime,getdate())*b.sMoney/60)"; sql语句中引入sp就代替了写那么多重复的数据了。 所以才会出错。不知道用什么方法写才可以。
changjiangzhibin 2015-12-16
  • 打赏
  • 举报
回复
就是字符串拼接,拼接好了放在查询分析器运行,看看是否正常 一般情况下如果是查询变量在数据库中是nvarchar,datetime等非数值型的需要前后加上单引号
xiehuangda 2015-12-16
  • 打赏
  • 举报
回复
请教各位有什么好方法吗
xiehuangda 2015-12-16
  • 打赏
  • 举报
回复
在sql语句中直接拼接都错误。 除非有=号后面拼接才正确。 比如:Case when a.Condition='"+拼接字符串+"' 这样是没有问题的。 但是如果没有等号的直接拼接就错误。例如 :Case when a.Condition='1' then '"+拼接+"' 这样的就错误了
  • 打赏
  • 举报
回复
'"+sp+"' 你这个拼出来肯定有错,按你原样的sql前后没有单引号
bdmh 2015-12-16
  • 打赏
  • 举报
回复
拼接是没问题的,你肯定是没拼对,你把最终的sql打印出来,或者放到查询器中运行,看看提示错误是什么

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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