- 基礎設定
- DATEPART 回傳時間指定部分如:時或分或年
- DATEDIFF 回傳開始與結束之間的差
- Between .. And .. 用來篩選資料範圍
- In 指定範圍
- 當遇到NULL時處理方式
- TSQL字元符號的使用
- Except 用來比較表格與表格之間,只回傳2個表格不相同部分
- Interset 用來比較表格與表格之間,只回傳2個表格相同部分
- Tablesample 用於亂數取出資料量,如果要用於採樣工作可以試試看
SELECT select_list
[INTO new_table_name]
FORM table_list | view_list
[WHERE search_conditions]
[GROUP BY group_by_list]
[HAVING search_conditions]
[ORDER BY order_list [ASC | DESC]]
[]:有或無都可以
[INTO new_table_name]
FORM table_list | view_list
[WHERE search_conditions]
[GROUP BY group_by_list]
[HAVING search_conditions]
[ORDER BY order_list [ASC | DESC]]
[]:有或無都可以
Where DATEPART(datepart , date) | |||||||||||||||
條件 | 說明 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
datepart | 普遍使用條件
|
||||||||||||||
date | 篩選條件必須是時間格式 | ||||||||||||||
範例 | Select ID,date From TEST Where DATEPART(MM,date) = 11 --找出11月份者 |
||||||||||||||
更詳細解說 |
Where DATEDIFF(datepart , startdate , enddate) | |||||||||||||||
條件 | 說明 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
datepart | 普遍使用條件
|
||||||||||||||
startdate | 篩選條件必須是時間格式 | ||||||||||||||
enddate | 篩選條件必須是時間格式 | ||||||||||||||
範例 | Select ID,startdate,enddate From TEST Where DATEDIFF(yyyy,startdate,enddate) < 20 ---找出年與年差未滿20年者 | ||||||||||||||
更詳細解說 |
Where id Between 1 And 5 | |
說明 | 指定資料區間,常常會使用到,如年齡範圍,日期範圍,生日等等... |
範例 | Select ID From Test Where ID Between 1 And 5 |
Where name In('Tom','Jack','Louis') | |
說明 | 搜尋清單中符合條件 |
範例 | Select name From Test Where name In('Tom','Jack','Louis') |
當值為NULL時處理方式
尋找值為NULL | |
方法 | 說明 |
---|---|
IS 或 IS NOT NULL | 可以搜尋出NULL 或者 不是NULL的資料 |
name = NULL | 竟可能不要使用這方法,但如果要使用必須要這樣做 SET ANSI_NULLS OFFSelect name From Where name=NULL (這樣就可以正常使用) |
ISNULL() | 這函式,可以幫忙解決如果是NULL則,以什麼方法顯示,如Where ISNULL(NAME,'N/A') 這樣如果NAME為NULL則以N/A字串顯示 |
T-SQL 字串處理方式
符號 | 說明 |
---|---|
% | 該符號代表1個字元以上的任意字元 |
_ | 該符號代表任意單一字元 |
[-] | 包含指定範圍字元 範例:'[S-V]'ing ,會搜尋出 Sing,Ting,Uing,Ving |
[^] | 包含不再指定範圍內 範例:'M[^c]',會搜尋第一字元為M,第二字元不為c的字串 |
Except 與 Interset使用方式
範例 | Select name,title From Test Except | Interset Select name,title From Test2 |
多數用來比較資料表與資料表之間的不同 |
Tablesample 使用方式
基本語法 | Select ... From ... Tablesample (N ROWS | N PERCENT) Repeatable(SEED) |
這可以取得亂數,但卻有缺點,取得資料會是固定區塊 參考資料SQL2008 3-26頁 | |
改良語法 | Select Top 10 name,title,CHECKSUM(NEWID()) From Test Order By CHECKSUM(NEWID()) |
這方法是靠NEWID()產生一組ID,在靠CHECKSUM()函式作計算,即可產生唯一數值,再靠Order By以及TOP ,就可產生完美亂數清單 |
沒有留言:
張貼留言