当前位置:编程学习 > C#/ASP.NET >>

.net中参数话SQL查询问题,急,高手进来

SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE (StartDate  like '%'+'@StartDate'+'%'   or  @StartDate=' ' )and   (FlightNum = @FlightNum)



这个SQL语句中,当StartDate为空是可以全部查询出来,但当StartDate是一个值的时候查询出来的结果为空,请高手帮助,谢谢了!!! --------------------编程问答-------------------- SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE StartDate  like '%'+@StartDate+'%' and   (FlightNum = @FlightNum)



OK! --------------------编程问答-------------------- SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE (StartDate  like '%@StartDate%'   or  @StartDate=' ' )and   (FlightNum = @FlightNum) --------------------编程问答-------------------- StartDate这个是日期型吧,如果是,你最好用convert转成字符型再like --------------------编程问答-------------------- 你的@StartDate是一个参数,你要是加上单引号,那就是一段字符串了。

而且那个or @StartDate=' '也不需要加,因为
select *  FROM Tickets where StartDate  like '%%' ==select *  FROM Tickets where StartDate ='' --------------------编程问答-------------------- 像这类的问题 跟踪下实际执行的SQL(SQL事件探查器) 立马就能知道错误在哪里咯。 --------------------编程问答-------------------- StartDate  like '%'+ @StartDate --------------------编程问答-------------------- 你要查询什么,,StartDate是一个值的时候没有对应的,,结果当然就空了,, --------------------编程问答--------------------
引用 2 楼 gxingmin 的回复:
SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE (StartDate  like '%@StartDate%'   or  @StartDate=' ' )and   (FlightNum = @FlightNum)

+1 应该是这个错误把 --------------------编程问答-------------------- 对哦,不知道他的StartDate是不是日期类型额。 --------------------编程问答--------------------

SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE (StartDate  like '%@StartDate%')and   (FlightNum = @FlightNum)

--------------------编程问答-------------------- 这种情况用这个参数查询不好搞定。还是拼字符串吧,拼之前检查一下有没有危险的SQL语句,防止SQL注入 --------------------编程问答--------------------
引用 9 楼 zj25810 的回复:
对哦,不知道他的StartDate是不是日期类型额。


是日期类型的 --------------------编程问答-------------------- 遇到这种问题调试下,然后 COPY 到数据库中执行下看看不就好了么。。。 --------------------编程问答--------------------
引用 2 楼 gxingmin 的回复:
SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE (StartDate  like '%@StartDate%'   or  @StartDate=' ' )and   (FlightNum = @FlightNum)



这样不行吧,我的StartDate是一个参数,是一个控件的值 --------------------编程问答--------------------
引用 1 楼 zj25810 的回复:
SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE StartDate  like '%'+@StartDate+'%' and   (FlightNum = @FlightNum)


+1 --------------------编程问答-------------------- SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE StartDate  like '%'+@StartDate+'%' and   (FlightNum = @FlightNum)

--------------------编程问答-------------------- 字段名不能参数化。 --------------------编程问答-------------------- 日期型转成字符串型应该就行了
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,