SQL Server 2012 新特性:新增和修改函数
生活随笔
收集整理的這篇文章主要介紹了
SQL Server 2012 新特性:新增和修改函数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
轉(zhuǎn)換函數(shù)
? ? ?1.PARSE ? ? ?Parse是把字符串類(lèi)型轉(zhuǎn)化為想要的類(lèi)型,看看和convert和cast的區(qū)別 ? ? ? ? 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?)?? ?? ? 新功能轉(zhuǎn)日期的時(shí)候格式一定要注意,不然轉(zhuǎn)不過(guò)去,沒(méi)有cast好用。 ? ? ? ?2.TRY_CONVERT ? ? ?TRY_CONVERT,如果轉(zhuǎn)化成功返回值,轉(zhuǎn)化不成功返回null,比 convert轉(zhuǎn)化不成功報(bào)錯(cuò),編程更加簡(jiǎn)單和方便些。 ? ? ?比如: ? ? ? ? ? ? ?SELECT?? CASE WHEN TRY_CONVERT(float, 'test') IS NULL? ? ? THEN 'Cast failed' ? ? ELSE 'Cast succeeded' END AS Result; GO ? ? ? ? ? ?3.TRY_PASSE ? ? ?和上面的類(lèi)似,只是不成功返回null。 SELECT?TRY_PARSE?('19010101'?AS?DATETIME?),CAST?('19010101'?AS?DATETIME) ? ----------------------- ----------------------- NULL??????????????????? 1901?-01?-01 00?:00?:00.000? ? ? ? ? ? ? ?? 日期和時(shí)間函數(shù) ? ? ?1.DATEFROMPARTS ? ? ?通過(guò)傳入年月日參數(shù)拼出一個(gè)日期,以前使用字符串拼接然后再轉(zhuǎn)化成日期 SELECT DATEFROMPARTS?(?2010,?12,?31?),CAST?('20101231'?AS?date) ---------- ---------- 2010-12-31 2010-12-31 ? ? ? ? ? ?2.DATETIME2FROMPARTS ? ? ?和上面類(lèi)似,但是多了時(shí)分秒和精度。 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?? ?? ? ? ?和上面基本沒(méi)有區(qū)別,只是沒(méi)有了精度 SELECT?DATETIMEFROMPARTS?(?2010,?12,?31,?23,?59,?59,?0?)?; ----------------------- 2010-12-31 23:59:59.000 ? ? ? ? ? ?4.DATATIMEOFFSETFROMPARTS ? ? ?相比上面多了時(shí)區(qū)設(shè)置。返回datatimeoffset類(lèi)型 ? ? ? ? ? ?5.EOMONTH ? ? ?計(jì)算月的最后一天,有了這個(gè)就很方便,在編寫(xiě)月報(bào)或者什么的時(shí)候。 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類(lèi)型在sql server中精度到分鐘位置。和上面的函數(shù)一樣的效果。 ? 邏輯函數(shù) ? ? ?1.CHOOSE ? ? ?返回列表中的索引值。如果不能傳入?yún)?shù),或者不能解析逗號(hào)分隔字符串,所實(shí)話沒(méi)啥用有點(diǎn)雞肋 SELECT?CHOOSE?(?3,?'Manager',?'Director'?,?'Developer',?'Tester'?) --------- Developer ? ? ? ? ? ?2.IIF ? ? ?根據(jù)表達(dá)式返回值,返回某個(gè)值。應(yīng)該是case when 的簡(jiǎn)化版 ? ? ? SELECT?IIF?(?(SELECT?COUNT(?1)?FROM?dbo.?t1)>=?1,?(SELECT?COUNT?(1?)?FROM?dbo?.t1?),?0?) ----------- 1 ? 字符串函數(shù) ? ? ?1.CONCAT ? ? ?用處和mysql的concat一樣用來(lái)連接字符串。 SELECT?CONCAT?(?'Happy ',?'Birthday '?,?11?,?'/',?'25'?) ------------------------------ Happy Birthday 11/25 ? ? ?2.FORMAT ? ? ?用來(lái)返回指定區(qū)域的的文本,比如時(shí)間。 DECLARE?@d?DATETIME?=?'10/01/2011'?; SELECT?FORMAT?(?@d?,?'D',?'en-US'?)?AS?'US English Result' US English Result --------------------------- Saturday,?October 1?,?2011 ? 與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的SQL Server 2012 新特性:新增和修改函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Poj(1459),最大流,EK算法
- 下一篇: MySQL5.5.32编译安装