SQL 實用技巧

在選擇數據的時候,我們通常會遇到要取前10條記錄之類的情況。

這時候,我們都會選擇用select top 10 * from 表名,這樣的語句。那麼如果我們單純地想要一個報表結構是否可以用

select top 0 * from 表名呢?我在潤乾報表中實測了一下,答案是否定的,結果是輸出了全部的表內數據。

正確的操作方法是直接select s1,s2,s3 from 表名 where s1 not in (select s1 from 表名) 導出的則是空表,或者直接將錶轉爲內建,刪掉表中數據。

 

 

利用replace做時間格式轉換

如:把所有"70.07.06"這樣的值變成"1970-07-06"

UPDATE 表名  SET 生日 ='19'+REPLACE(生日,'.','-')

關於這個加號"+",可以自動轉換數據類型,比如上面的句子,如果寫成19+REPLACRE(生日,'.','-')也是可以的。

1+3+'年'會得出4年(前面按數字處理,後面遇到字符串才轉換類型)而'年'+3+1則會得出年31,處理好“+”會在數據的連接上方便不少。

 

數據庫中的數據有時候要從中間位置取數,比如數據庫中有6條記錄,123456,我們需要的順序是456123,這時候排序多會用到case語句,比如select * from raq order by case when id >3 then id-6 else id end 或者索性select * from raq order by charindex(cast(id as varchar),'456123')

但是從數學邏輯上講,可以用select * from raq order by (id+3)%7  計算速度得到優化,恩恩,這告訴我們,數學真的很重要~~

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章