自己总结的不定条件SQL查询语句的写法
我说的不定条件是指查询条件的个数不定。有时一个,有时两个,有时好几个。
首先我发现
select * from A where a='kkk' 与
select * from A where a like 'kkk'
其实效果是一样,只要 like 后面的字符串不包含通配符。这样一来就很方便了。譬如有
select * from A where a='KKK' and b='LLL'
有两个查询条件,但有时候又只需要第一个或者第二个条件,又不想写好几条SQL语句。这时就可以先把SQL参数化
select * from A where
a like @a
and
b like @b
把等于号替换成 like
然后给参数a赋值,有两种选择, 要么是%,要么是不包含通配符的任何字符串。参数b的赋值同理。
假如给参数a赋值为%,参数b赋值为字符串'LLL',那么实际SQL语句为
select * from A where a like '%' and b like 'LLL' 相当于
select * from A where b='LLL',只使用了一个条件。
这个只适用于包含字符串的参数的情况。至于非字符串的情况,我还没有考虑到。在VB2008中可以这么用。别的没试过。
也许有人早已知道,或许我说的不对,欢迎指教。
相关文档:
一、情况说明
sql server 2000以前的版本,例如7.0一般不存在多个版本,只有标准版跟桌面版,用户如果不清楚该装什么版本的话,可按安装上的
安装先决条件指示安装,一般在WIN2000 服务器版上装标准版,其他的系统装桌面版的就可以;而SQL Server 2000安装问题就比较大,时常
见到的问题如下:
......
一直没有找到一种好的方法来引用有返回值的存储过程的方法,使我在添加数据中走了不少的弯路,最近,在查阅了大量的资料之后,终于在微软的一个实例中找到了一种良好的方法。
首先编写好一有返回值的存储过程
create procedure proc_name
@para1 nchar(20), --输入参数
@ ......
private void Create_Pz(string Sourcename)
{
string OutMsg;
SqlParameter[] sortPara = { new SqlParameter("@ps_IsType", Pz ......
Use 数据库
DECLARE @ProcName varchar(50)
Create Table #tmpName(Content varchar(2000))
Create Table #tmp(ProcName varchar(2000),Content1 varchar(8000))
--定义一个游标
DECLARE SearchProc CURSOR FOR
--查询数据库中存储过程的名称,尽量去除系统PROC,可以根据crdate时间字段来寻找非系统PROC
select n ......
从博客园中看到一篇文章,介绍大软件公司面试时常常会出的两道SQL题(见附录)。
我觉得受益很多,在此之前,我一直觉得,SQL2008似乎提供了这方面的支持,但更低的版本,包括2005,非游标做不出来(水平够菜)。总结心得如下:
1、 强大的group by
1 select stdname,
2 isnull(sum( ......