SQL server 2008 学习笔记(一)

数据库的基本操作分类:

1、数据库的查询及查询语句;

2、数据库数据修改;


select    union


单独数据的查询:

 "%":表示任意0个或多个字符
  oraclesqlserver  mysql  
  支持  支持  支持

Select * from 表名 where 列名 like '%' //查询出全部   
Select * from 表名 where 列名 like 'x' //完全匹配查询  
Select * from 表名 where 列名 like '%x' //右为x,前面可以有任意位字符  
Select * from 表名 where 列名 like 'x%' //左为x,后面可以有任意位字符  
Select * from 表名 where 列名 like '%x%' //中间为x,左右都可以有任意位字符 

例如:

SELECT * FROM  xxxxxx(表名)
 
where xmba1(列名) like  '%${xmmc}%'


"_":表示单个字符
  oraclesqlserver  mysql  
  支持  支持  支持
Select * from 表名 where 列名 like '_x' //右为x,前面有一位字符 
Select * from 表名 where 列名 like '__x'  //右为x,前面有两位位字符  
Select * from 表名 where 列名 like 'x__'  //左为x,后面有两位位字符 


"[]":表示括号内所列字符中的一个

指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
注:如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”

1)sqlserver
Select * from 表名 where 列名 like '[张李王]三' //将找出“张三”,“李三”,“王三”(而不是“张李王三”);  
Select * from 表名 where 列名 like  '老[1-9]' //将找出“老1”,“老2”,……,“老9”;  


2)oracle
select * from 表名 where regexp_like(列名,'[张李王]三') 


3)mysql
select * from 表名 where 列名 rlike '[张李王]三' 
select * from 表名 where 列名 regexp '[张李王]三'  
  oraclesqlserver  mysql  
  不支持  不支持  支持


"[^]":表示不再括号列中的单个字符
其取值与[]相同,但它要求所匹配对象为指定字符意外的任一字符。

1)sqlserver
Select * from 表名 where 列名 like '[^张李王]三' //将找出不姓“张”,“李”,“王”的“赵三”,“孙三”等;
Select * from 表名 where 列名 like '老[^1-4]';  //将排除“老1”到“老4”,寻找“老5”,“老6”、……  

特殊字符模糊查询
当要查询的字符串包含通配符的时候,可以采用下面的方法来查询
1)sqlerver
用[ ]将特殊字符包含:select * from 表名 where 列名 like '_[%]_'  

注:ACCESS的模糊查询比较特殊是'?','*' 。 如 Select * from 表名 where 列名 like '*b*'


二、

将数据集ds1的sql语句修改为:SELECT * FROM 订单 where 1=1${if(len(area) == 0,"","and 货主地区 = '" + area + "'")}

注:where 1=1表示条件永真,防止没有之后的参数条件时,where多出而导致出错;len(area)==0表示参数area为空;"and 货主地区='"+area+"'" 中间的area表示取参数值,'+' 为字符串拼接符号。
${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} 表示若参数area为空就不进行过滤,若不为空则货主地区等于参数值。
此处参数名area与参数面板中添加的下拉框控件area控件名一致,即将参数控件与数据集参数绑定到一起,实现参数的过滤。


通过报表参数编辑

1)双击A2单元格,选择过滤按钮,给A2单元格增加过滤条件:货主地区等于公式:if(len($area)==0,nofilter,$area)



注:nofilter表示不过滤,if(len($area)==0,nofilter,$area)表示参数area为空,就不过滤,若不为空则以参数值进行过滤;if(len($province)==0,nofilter,$province)意义相同。


参数联动,就是指后面一个参数下拉框的值会根据前一个参数的值的改变而改变。如下图中,省份选项会跟随地区选项而相应变动。


新建ds1数据集:select * from 订单  where 货主地区='${地区}' and 货主省份='${省份}',查询订单表,设置两个查询条件地区和省份,如下图:


增加参数
打开模板>模板参数,定义一个参数名为std的参数。
3.3 下拉框显示值设置
切换到参数界面窗口,使用默认的参数界面,设置std参数的控件类型为下拉框,数据字典为数据查询,数据集名称选择ds1,实际值为序号,显示值使用公式表示:$$$ + " "+ VALUE("ds1",1,2,$$$,1)+" "+ VALUE("ds1",3,2,$$$,1),如下图所示:

注:VALUE("ds1",1,2,$$$,1)返回VALUE("ds1",3,2,$$$,1)数组的第1个值,找出对应学号的班级和学生姓名信息。
相关函数说明:
 $$$ :当前单元格的实际值;
 VALUE("ds1",1,2,$$$,1):返回ds1中第1列中的元素,这些元素对应的第2列的值为$$$。
 VALUE("ds1",3,2,$$$,1):返回ds1中第3列中的元素,这些元素对应的第2列的值为$$$。 
最后一个参数说明:值小于0时,会取数组的第一个值,值大于数组长度时,会取数组的最后一个值,最后将这些结果拼接成字符串。



展开阅读全文

没有更多推荐了,返回首页