SQL Server 2012 新特性:新增和修改函数
生活随笔
收集整理的這篇文章主要介紹了
SQL Server 2012 新特性:新增和修改函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉換函數
? ? ?1.PARSE ? ? ?Parse是把字符串類型轉化為想要的類型,看看和convert和cast的區別 ? ? ? ? SELECT?PARSE?('2.111111'?AS?float?),CAST?('2.111111111111'?AS?FLOAT) ---------------------- ---------------------- 2.111111?????????????? 2.111111111111 ? (1?row?(s?)?affected?) ? SELECT?PARSE?('19010101'?AS?DATETIME?),CAST?('19010101'?AS?DATETIME) ? Msg 9819,?Level?16,?State?1,?Line 63 Error converting string?value?'19010101'?into?data?type?datetime?using?culture?''. ? SELECT?PARSE?('1901-01-01'?AS?DATETIME?),CAST?('1901-01-01'?AS?DATETIME) ? ----------------------- ----------------------- 1901-01-01 00:00:00.000 1901-01-01 00:00:00.000 ? (1?row?(s?)?affected?)?? ?? ? 新功能轉日期的時候格式一定要注意,不然轉不過去,沒有cast好用。 ? ? ? ?2.TRY_CONVERT ? ? ?TRY_CONVERT,如果轉化成功返回值,轉化不成功返回null,比 convert轉化不成功報錯,編程更加簡單和方便些。 ? ? ?比如: ? ? ? ? ? ? ?SELECT?? CASE WHEN TRY_CONVERT(float, 'test') IS NULL? ? ? THEN 'Cast failed' ? ? ELSE 'Cast succeeded' END AS Result; GO ? ? ? ? ? ?3.TRY_PASSE ? ? ?和上面的類似,只是不成功返回null。 SELECT?TRY_PARSE?('19010101'?AS?DATETIME?),CAST?('19010101'?AS?DATETIME) ? ----------------------- ----------------------- NULL??????????????????? 1901?-01?-01 00?:00?:00.000? ? ? ? ? ? ? ?? 日期和時間函數 ? ? ?1.DATEFROMPARTS ? ? ?通過傳入年月日參數拼出一個日期,以前使用字符串拼接然后再轉化成日期 SELECT DATEFROMPARTS?(?2010,?12,?31?),CAST?('20101231'?AS?date) ---------- ---------- 2010-12-31 2010-12-31 ? ? ? ? ? ?2.DATETIME2FROMPARTS ? ? ?和上面類似,但是多了時分秒和精度。 SELECT?DATETIME2FROMPARTS?(?2011,?8,?15,?14,?23,?44,?5,?1?),?DATETIME2FROMPARTS?(?2011,?8,?15,?14,?23,?44,?50,?2?),?DATETIME2FROMPARTS?(?2011,?8,?15,?14,?23,?44,?500,?3?); GO --------------------------- --------------------------- --------------------------- 2011-08-15 14:23:44.5?????? 2011?-08?-15 14?:23?:44.50????? 2011?-08?-15 14?:23?:44.500 ? ? ?3.DATATIMEFROMPARTS?? ?? ? ? ?和上面基本沒有區別,只是沒有了精度 SELECT?DATETIMEFROMPARTS?(?2010,?12,?31,?23,?59,?59,?0?)?; ----------------------- 2010-12-31 23:59:59.000 ? ? ? ? ? ?4.DATATIMEOFFSETFROMPARTS ? ? ?相比上面多了時區設置。返回datatimeoffset類型 ? ? ? ? ? ?5.EOMONTH ? ? ?計算月的最后一天,有了這個就很方便,在編寫月報或者什么的時候。 DECLARE?@date?DATETIME?=?GETDATE?(); SELECT?EOMONTH?(?@date?)?AS?'This Month',?EOMONTH?(?@date,?1?)?AS?'Next Month',EOMONTH?(?@date?,?-1?)?AS?'Last Month'; GO This?Month?Next?Month?Last?Month ---------- ---------- ---------- 2016-08-31 2016-09-30 2016-07-31 ? ? ?6.SMALLDATATIMEFROMPARTS ? ? ?SMALLDATATIME類型在sql server中精度到分鐘位置。和上面的函數一樣的效果。 ? 邏輯函數 ? ? ?1.CHOOSE ? ? ?返回列表中的索引值。如果不能傳入參數,或者不能解析逗號分隔字符串,所實話沒啥用有點雞肋 SELECT?CHOOSE?(?3,?'Manager',?'Director'?,?'Developer',?'Tester'?) --------- Developer ? ? ? ? ? ?2.IIF ? ? ?根據表達式返回值,返回某個值。應該是case when 的簡化版 ? ? ? SELECT?IIF?(?(SELECT?COUNT(?1)?FROM?dbo.?t1)>=?1,?(SELECT?COUNT?(1?)?FROM?dbo?.t1?),?0?) ----------- 1 ? 字符串函數 ? ? ?1.CONCAT ? ? ?用處和mysql的concat一樣用來連接字符串。 SELECT?CONCAT?(?'Happy ',?'Birthday '?,?11?,?'/',?'25'?) ------------------------------ Happy Birthday 11/25 ? ? ?2.FORMAT ? ? ?用來返回指定區域的的文本,比如時間。 DECLARE?@d?DATETIME?=?'10/01/2011'?; SELECT?FORMAT?(?@d?,?'D',?'en-US'?)?AS?'US English Result' US English Result --------------------------- Saturday,?October 1?,?2011 ? 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的SQL Server 2012 新特性:新增和修改函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Poj(1459),最大流,EK算法
- 下一篇: 《TCP/IP详解》之二:流式数据交互