您的位置:首页 > 数据库

Sql中常用语句及通配符的介绍

2010-06-21 13:29 417 查看
我们经常会需要通过Select命令从数据库(如Access、Sql
Server等)中选取数据,其基本语法构成如下:
Select 列#1,列#2,...,列#n From 表#1,表#2,...,表#n Where 条件 Group By
列#1,列#2,...,列#n Having 条件 Order By 列#1,列#2,...,列#n

这里,我们只简单介绍一下Select命令中的Where条件判断的使用方法。

一般如果只想选取数据表中的部分数据时,此时可以在Select中加上选择的条件,即加上Where子句。在Where子句中,以比较运算符来构成选择的条件,以下是Where子句中使用的比较运算符:
= 等于
!=或<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
Between(Not Between) 介于(不介于)
In(Not In) 列值是否存在于所列的列表内
Is Null(Is Not) 列值是否为Null

可以一次指定数个条件,每个条件间以逻辑运算符Not、And或者Or连接。

我们举例来介绍一下:
1、从数据表Reg表中选取用户积分值(字段expvalue,Int数值型)为1000分的用户记录:
Select * From Reg Where expvalue = 1000

2、从数据表Reg表中选取用户性别(字段usex,Bin逻辑型)为男生,积分值(字段expvalue,Int数值型)大于等于1000分的用户记录:
Select * From Reg Where usex = T And expvalue >= 1000

3、从数据表Reg表中选取用户级别(字段ugrade,Varchar文本型)为管理员,或者用户级别为版主的用户记录:
Select * From Reg Where ugrade = 管理员 Or ugrade = 版主

4、从数据表Reg表中选取用户级别(字段ugrade,Varchar文本型)为管理员,或者用户级别为版主,同时积分值不等于0分的用户记录:
Select * From Reg Where (ugrade = 管理员 Or ugrade = 版主) And
expvalue != 0

5、从数据表Reg表中选取积分值大于1000分,小于2000的用户记录:
Select * From Reg Where expvalue Between 1000 And 2000

6、从数据表Reg表中选取联系地址(字段address,Varchar文本型)为上海市与北京市的用户记录:
Select * From Reg Where SubString(address,1,3) In (上海市,北京市)
说明,SubStrin为Sql Server函数,如果使用Access,则改用函数Mid。

7、从数据表Reg表中选取MSN(字段umsn,Varchar文本型)为Null的用户记录:
Select * From Reg Where umsn Is Null
如果字段非Null,即为空值,则Where子句改成umsn=

另外,在Where子句中,还可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取那些“很像...”的数据记录,以下是可使用的通配符:
% 零或者多个字符
_ 单一任何字符(下划线)
/ 特殊字符
[] 在某一范围内的字符,如[0-9]或者[aeth]
[^] 不在某范围内的字符,如[^0-9]或者[^aeth]

举例说明:
AB% “AB”后接任何字符的字串,如AB、AB89、IKABKCE
_AB “AB”之前可为任一字符,如tAB、9AB
AB[a-cdf] “AB”后接a、b、c、d、f任一字符的字串

从数据表Reg表中选取注册用户名(字段uname,Varchar文本型)为5DM的用户记录:
Select * From Reg Where uname Like %5DM%

这些都是Select中Where子句基础的使用介绍。仅适合Sql初学者学习,对于有数据库开发经验的,也可做为一种资料以做索引备查吧。
sql截取金额字段小数位语句:

select 金额字段,convert(varchar,金额字段) as 转换文本后,
charindex('.',convert(varchar,金额字段)) as 小数位置,
(len(convert(varchar,金额字段))) as 截取长度,
substring(convert(varchar,金额字段),charindex('.',convert(varchar,金额字段)),(len(convert(varchar,金额字段)))) as 截取后的值

from 表名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: