1.TOP 子句
TOP 子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
SQL Server 的语法:
SELECT TOP number|percent column_name(s)
FROM table_name
2.’%%’查询
我们希望从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons
WHERE City LIKE '[ALN]%'
3. IN 操作符实例
现在,我们希望从上表中选取姓氏为 Adams 和 Carter 的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons
WHERE LastName IN ('Adams','Carter')
4. LEN() 函数
LEN 函数返回文本字段中值的长度。
SQL LEN() 语法
SELECT LEN(column_name) FROM table_name
5. ROW_NUMBER()OVER()函数
ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
6. ROUND 函数
用于把数值字段舍入为指定的小数位数。
语法
ROUND ( numeric_expression , length [ , function ] )
参数
numeric_expression
精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。
length是 numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。
7.HAVING 子句
在 SQL 中增加 HAVING 子句原因是WHERE 关键字无法与合计函数一起使用。
SQL HAVING 语法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
Having 只用于查询条件中有合计函数的。
8. ISNULL函数
(1)ISNULL
使用指定的替换值替换 NULL。
语法
ISNULL ( check_expression , replacement_value )
这里isnull用于查询字段里
(2)
case when isnull(b.c_delivery_type,'')='' then b.c_delivery_type else a.c_delivery_type end as 物流方式
null是特殊的值,他不能被进行比较,所以=<>等这些符号是不能判断null的,所以isnull(字段名,'')='',把null转换成'',再和''比较,而字段名='',由于没有处理null的情况,所以如果字段有null值,将被忽略
9.union 用法
分为union与union all
union 缺省在合并结果集后消除重复项,
union all 指定在合并结果集后保留重复项,
打个比喻吧 比如A表的数据是 A{
1,4,5,9} B{2,3,4,5}
那我执行此语句 select * from A union select * from B 那结果是{1,2,3,4,5,9}
如果执行select * from A union all select * from B 结果是{1,2,3,4,4,5,5,9}
10. DateDiff()
DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期的时间差的日期部分。换句话说,它得 出两个日期之间的间隔。结果是等于 date2 - date1 的日期部分的带符号整数值。
表达式DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]])
允许数据类型: timeinterval 表示相隔时间的类型,代码为:
年份 yy、yyyy 季度 qq、q
月份 mm、m
每年的某一日 dy、y
日期 dd、d
星期 wk、ww
工作日 dw
小时 hh
分钟 mi、n
秒 ss、s
毫秒 ms
11. datepart()函数
DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
DATEPART(datepart,date)
date 参数是合法的日期表达式。datepart 参数可以是下列的值:
datepart |
缩写 |
年 |
yy, yyyy |
季度 |
qq, q |
月 |
mm, m |
年中的日 |
dy, y |
日 |
dd, d |
周 |
wk, ww |
星期 |
dw, w |
小时 |
hh |
分钟 |
mi, n |
秒 |
ss, s |
毫秒 |
ms |
微妙 |
mcs |
纳秒 |
ns |
12. join函数
sql之left join、right join、inner join的区别
left
join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
13. group by
group by 对结果集分组,针对每一组返回一行。
若select子句中包含聚合函数,则聚合函数返回每个组的信息
若指定group by时,select语句后的所有非聚合函数字段必须出现在group by列表中。
14. cast()
Cast()函数是转换数据类型的
CAST 和 CONVERT (Transact-SQL),将一种数据类型的表达式转换为另一种数据类型的表达式
Transact-SQL 语法约定
语法
Syntax for CAST:
CAST ( expression AS data_type [ (length ) ])
Syntax for CONVERT:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
参数
expression
任何有效的表达式。
data_type
目标数据类型。这包括 xml、bigint 和 sql_variant。不能使用别名数据类型。有关可用数据类型的详细信息,请参阅数据类型 (Transact-SQL)。
length
指定目标数据类型长度的可选整数。默认值为 30。
style
指定 CONVERT 函数如何转换 expression 的整数表达式。如果样式为 NULL,则返回 NULL。该范围是由 data_type 确定的。有关详细信息,请参阅“备注”部分。
15. dateadd()
定义和用法
DATEADD() 函数在日期中添加或减去指定的时间间隔。
语法
DATEADD(datepart,number,date)
date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
datepart 参数可以是下列的值:
datepart |
缩写 |
年 |
yy, yyyy |
季度 |
qq, q |
月 |
mm, m |
年中的日 |
dy, y |
日 |
dd, d |
周 |
wk, ww |
星期 |
dw, w |
小时 |
hh |
分钟 |
mi, n |
秒 |
ss, s |
毫秒 |
ms |
微妙 |
mcs |
纳秒 |
ns |
16. datepart()
定义和用法
DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
语法
DATEPART(datepart,date)
date 参数是合法的日期表达式。datepart 参数可以是下列的值:
datepart |
缩写 |
年 |
yy, yyyy |
季度 |
qq, q |
月 |
mm, m |
年中的日 |
dy, y |
日 |
dd, d |
周 |
wk, ww |
星期 |
dw, w |
小时 |
hh |
分钟 |
mi, n |
秒 |
ss, s |
毫秒 |
ms |
微妙 |
mcs |
纳秒 |
ns |
17. charindex() substring()
SQL CHARINDEX
函数返回字符或者字符串在另一个字符串中的起始位置
CHARINDEX
函数调用方法如下:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在
expression2中找expression1的位置。SQL CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置
select
substring('123,456',charindex(',','123,456') ,len('123.456')-3) 结果: ',456'
意思:截取’123,456‘ 从第4为开始截取 4位
substring(字段,第几个字符开始截取,截取长度)
charindex(',','123,456') ‘,’的位置 结果为:4
len('123.456') 字段长度 结果为:7
18. decimal()
decimal(a,b)
a指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。
b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。
19. right()
反回字符右边的指定长度的字符
例:select right('1234',2)
结果:34
20. 取整函数
1 trunc(value,precision)按精度(precision)截取某个数字,不进行舍入操作。
2 round(value,precision)根据给定的精度(precision)进行四舍五入。
3 ceil (value) 产生大于或等于指定值(value)的最小整数。
4 floor(value)与 ceil()相反,产生小于或等于指定值(value)的最小整数。
5 sign(value) 与绝对值函数ABS()相反。ABS()给出的是值的量而不是其符号,sign(value)则给出值的符号而不是量。
21. partition by
partition by的作用仅用于分组
22.convert()
定义和用法
CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以用不同的格式显示日期/时间数据。
语法
CONVERT(data_type(length),data_to_be_converted,style)
data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。
可以使用的 style 值:
Style ID |
Style 格式 |
100 或者 0 |
mon dd yyyy hh:miAM (或者 PM) |
101 |
mm/dd/yy |
102 |
yy.mm.dd |
103 |
dd/mm/yy |
104 |
dd.mm.yy |
105 |
dd-mm-yy |
106 |
dd mon yy |
107 |
Mon dd, yy |
108 |
hh:mm:ss |
109 或者 9 |
mon dd yyyy hh:mi:ss:mmmAM(或者 PM) |
110 |
mm-dd-yy |
111 |
yy/mm/dd |
112 |
yymmdd |
113 或者 13 |
dd mon yyyy hh:mm:ss:mmm(24h) |
114 |
hh:mi:ss:mmm(24h) |
120 或者 20 |
yyyy-mm-dd hh:mi:ss(24h) |
121 或者 21 |
yyyy-mm-dd hh:mi:ss.mmm(24h) |
126 |
yyyy-mm-ddThh:mm:ss.mmm(没有空格) |
130 |
dd mon yyyy hh:mi:ss:mmmAM |
131 |
dd/mm/yy hh:mi:ss:mmmAM |
实例
下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:
CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),110)
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)
结果类似:
Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635
语句及查询结果:
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06
SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16
SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06
SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06
SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06
SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06
SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46
SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06
SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16
SELECT CONVERT(varchar(100), GETDATE(), 12): 060516
SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
SELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516
SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49:000
23 Sql Server REPLACE函数的使用
REPLACE
用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。
Replace(‘123456’,’23’,’9’)
将123456中的23用9替换掉
24 str(a,b,c)函数
将数值型转换成指定长度的字符串
如select STR(12345.633,7,1) 结果为12345.6
第一个参数是要转换的数值,
第二个参数是转换後的总长度(含小数点,正负号),
第三个参数为小数位
25 .INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from
Table1
26. select 1 from table
Select 1 from table 是查询表的数据有多少,select * from table是查询表的所有数据的详细信息
27.rand()函数
SQL RAND函数调用可以产生随机数
Select rand()获取介于0和1之间的一个数(小数)
Select rand()*10获取0和10之间的一个数(小数)
Select str(rand()*10)获取0和10之间的一个数(整数)
Select str(rand()*10000) 获取0和10000之间的一个数(整数)
28.存储过程中的SET ANSI_NULLS ON 和 SET QUOTED_IDENTIFIER ON 语句用法
SET QUOTED_IDENTIFIER 为ON时,标识符可以由双引号分隔,文字必须由单引号分隔
SET ANSI_NULLS,就是说NULL是否可以进行=和<>比较;
当设置为ON 时,表示不可以进行比较,凡是进行比较的,结果都为0
当设置为 OFF时,表示可以进行比较,比较的结果就是实际结果
29. ISNUMERIC
判断参数是否是纯数字型
30.rtrim函数
截断所有尾随空格后返回一个字符串。