- 基礎設定
- 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 ,就可產生完美亂數清單 | |
沒有留言:
張貼留言