Sql 语句中常用用法
1. 在sql中可以用运算符号 如 +,-,*等。
例:update test set dMoney=dMoney*2 where dMoney=50
说明:把test表中的dMoney值为50的变为原来的两倍
2. 在sql中可以用format格式化时间字段
如:
Select format(pDate ,’yyyymmdd’) as 时间 from test
说明:把test表中时间字段格式化并输出
输出结果:
时间
20070306
20080808
3. 要把表中的时间字段的值跟一个字符串比较,必须把表中的时间字段格式化为yyyymmdd形式。例:
“Select * from test where format(pDate,’yyyymmdd’)>=’” & strTime & “’ “
这为VB6的书写形式。(说明这样就可以把表中大于strTime时间的数据找出来了)
4. update testUser.dbo.test
set dMoney=
case
when dMoney>100 Then dMoney+50
when dMoney<100 Then dMoney*2
end
说明:该语句是把表中dMoney的值大于100的,增加50。小于100变为原来的2倍
该语句在sql server中已经运行通过
例2:update panga
Set e_wage=
Case
When job_level=’1’ then e_wage*1.08
When job_level=’2’ then e_wage*1.07
Else e_wage*1.05
End
5.update testUser.dbo.test
set pDate=getdate()
where UserName='asf'
说明:把表中用户名为asf这条记录的时间的值该为当前时间
6.select UserName='tang'
from testUser.dbo.test
说明:把表中所有UserName的值都显示tang,(数据表中UserName字段的值没有变)
7.等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay '01:02:03'
select *
from testUser.dbo.test
8.等到晚上11 点零8 分后才执行SELECT 语句
waitfor time ’23:08:00’
select *
from testUser.dbo.test
9.stockname like '% find this %'
stockname like '[a-zA-Z]%' --------- ([]指定值的范围)
stockname like '[^F-M]%' --------- (^排除指定范围)
10.select 'dMoney+10'
= dMoney+10
from testUser.dbo.test
说明:把test表中的dMoney字段的值在原来值的基础上加10并显示出来。
原表 加10后查询出来的结果
dMoney dMoney+10
21 31
22 32
23 33
11.GetDate()获得的日期由两部分组成,分别是今天的日期和当时的时间: Select GetDate()
12.DateName()还可以获得到小时、时间、秒、星期几、第几周,分别如下:
Select Datename(hour,GetDate())
Select Datename(minute,GetDate())
Select Datename(second,GetDate())
Select Datename(weekDay,GetDate())
Select Datename(week,GetDate())
13. 使用Convert()函数格式日期
select convert(char(10),GetDate(),120) as Date
第3个参数就是用来设置日期类型数据的显示样式的,下面介绍几种样式的参数:
100 mm dd yyyy
101 mm/dd/yyyy
102 yyyy.mm.dd
103 dd/mm/yyyy
106 dd mm yyyy
108 hh:mi:ss(时间)
111 yyyy/mm/dd
112 yyyymmdd
120 yyyy-mm-dd
14. 按a列分组后b列最大的所有列记录
test 表 a b c
1 5 abc
2 6 bcd
1 7 ade
2 8 adc
若取按a列分组后,b列最大,的所有列的记录:
result a b c
1 6 bcd
2 8 adc
可以使用如下语句:
select * from test where b in (select max(id) from test group by a)
15.把查询结果减去一个数
select Convert(int,Number)-2 from OrderGoods where ProductKey='37'
16 显示前5条数据
select top 5 * from OrderGoods
17 select DATEADD(day ,3,UTime) from test
说明:在当前字段的时间上加上3天。UTime为表中的一个字段
18 select DATEDIFF(day ,’2008-7-1’,UTime) from test
说明:找出时间差
19 select DATENAEM(month,getdate()) 得到现在的月
select DATENAEM(Day,getdate()) 得到现在的号
select DATENAEM(year,getdate()) 得到现在的年
20 select LEFT(UName ,9) from test 得到UName字段从左到右的9位数
21 select LEN(UName) from test 转换成大写
22 select LOWER(UName) from test 转换成小写
23 select Trim(UName) from test 去掉空格
24 复制表
Select * into b from a
说明 :a为 新表名 b为源表名 b在数据库中不存在,运行时自动建立一张表