有时SQL中不常用的函数, 关键词, 判式会使查询更简洁, 更有效率.
1. STUFF
stuff(<string1>,<starting position>, <Length to delete from string1>, <string 2>)
2. INTERSECT
生成只包括该运算符连接的两个结果集都有的行组成的结果集(来自结果A且在结果B中重复的).
3. EXCEPT
来自结果A且在结果B中不重复的.
4. UNION/UNION ALL/UNION CORRESPONDING
5. EXTRACT
从DateTime值中提取单个域
Extract(<dateTime field> from <datetime value>)
dateTime field: Day, year, month, hour, minute, second, timezone_hour
datetime value: 具体值, 列, 或带有datetime类型值的表达式.
6. CURRENT_DATE/CURRENT_TIME/CURRENT_TIMESTAMP/GETDATE()
CURRENT_TIMESTAMP 等价于 GETDATE();
print current_date 等价于 print convert(varchar,getdate(), 101)
<style> | format |
(blank),0 | mmm dd yyyy hh:mmAM/PM |
1 | mm/dd/yy |
2 | yy.mm.dd |
3 | dd/mm/yy |
4 | dd.mm.yy |
5 | dd-mm-yy |
6 | dd mmm yy |
7 | mmm dd, yy |
8 | hh:mm:ss |
9 | mmm dd yyyy hh:mm:ss:sssAM/PM |
10 | mm-dd-yy |
11 | yy/dd/mm |
12 | yymmdd |
13 | dd mmm yyyy hh:mm:ss:sss |
14 | hh:mm:ss:sss |
20 | yyyy-dd-mm hh:mm:ss |
21 | yyyy-dd-mm hh:mm:ss:sss |
7. BETWEEN
<test expression> between <low expression> and <high expression>
等价于: <test expression> >= <low expression> and <test expression> <= <high expression>
比较
单说in和exsist, in的效率较差。
关于EXISTS与IN的区别:
EXISTS检查是否有结果,判断是否有记录,返回的是一个布尔型(TRUE/FALSE)。
IN是对结果值进行比较,判断一个字段是否存在于几个值的范围中,所以 EXISTS 比 IN 快。
主要区别是:
exists主要用于片面的,有满足一个条件的即可,
in主要用于具体的集合操作,有多少满足条件.
exists是判断是否存在这样的记录,
in是判断某个字段是否在指定的某个范围内。
exists快一些。
注意有时不一定的:in适合内外表都很大的情况,exists适合外表结果集很小的情况。