SQL Server 2012 引入CONCAT函數(shù)

字號(hào):


    Sql server 2012 加入了一些新的系統(tǒng)函數(shù), 下邊簡單介紹一下CONCAT
    CONCAT 函數(shù)最多可以連接255個(gè)字符變量,當(dāng)調(diào)用這個(gè)函數(shù)的時(shí)候需要至少接收兩個(gè)參數(shù),參數(shù)類型不一定是字符串類型,也可以是可以隱式轉(zhuǎn)換為字符串的類型比如int ,float等類型。只要符合sql 2012的能隱式轉(zhuǎn)換為字符串的規(guī)則即可,當(dāng)我們想把兩個(gè)值類型的數(shù)據(jù)連接起來的時(shí)候,不需要先將它們轉(zhuǎn)為nvarchar然后再通過“+”來連接了
    如果傳入的參數(shù)為null,則會(huì)把它隱式轉(zhuǎn)換為空字符串,如果所有的輸入?yún)?shù) 都是null的話, 會(huì)返回一個(gè)類型為 VARCHAR(1)的空字符串。
    語法規(guī)則
    SELECT CONCAT (String_Value1, String_Value2, String_Value3 [, String_ValueN]) --
    實(shí)例:
    DECLARE @a VARCHAR(100)='Jim is now '
    DECLARE @b INT=10
    DECLARE @c VARCHAR(200)=' years old'
    Select CONCAT (@a, @b, @c)
    Go
    Returns:
    Jim is now 10 years old
    上邊并沒有使用顯式轉(zhuǎn)換把int轉(zhuǎn)換為varchar,如果不使用concat呢,我能可能需要這么來做了
    DECLARE @a VARCHAR(100)='Jim is now '
    DECLARE @b INT=10
    DECLARE @c VARCHAR(200)=' years old'
    SELECT @a+Convert(VARCHAR,(@b))+@c
    Go;
    Returns:
    Jim is now 10 years old
    下邊是輸入?yún)?shù)類型和輸出參數(shù)的類型:
    下邊是輸入?yún)?shù)類型和輸出參數(shù)的類型:
    Input Value / Type
    Output Value / Type
    SQL-CLR (TYPES & UDT)
    NVARCHAR(MAX)
    NVARCHAR(MAX)
    NVARCHAR(MAX)
    NVARCHAR(<=4000)
    NVARCHAR(<=4000)
    VARBINARY(MAX)
    NVARCHAR(MAX)
    ALL OTHER INPUT TYPES
    VARCHAR(<=8000) *Unless one of the parameters is an NVARCHAR of any length and in that case, the output value would be in NVARCHAR(MAX)
    sqlserver 2012還有很多其他新的函數(shù)加入
    Conversion functions
    PARSEPARSE
    TRY_CONVERTTRY_CONVERT
    TRY_PARSETRY_PARSE
    Date and time functions
    DATEFROMPARTSDATEFROMPARTS
    DATETIME2FROMPARTSDATETIME2FROMPARTS
    DATETIMEFROMPARTSDATETIMEFROMPARTS
    DATETIMEOFFSETFROMPARTSDATETIMEOFFSETFROMPARTS
    EOMONTHEOMONTH
    SMALLDATETIMEFROMPARTSSMALLDATETIMEFROMPARTS
    TIMEFROMPARTSTIMEFROMPARTS
    Logical functions
    CHOOSECHOOSE
    IIFIIF
    String functions
    CONCATCONCAT
    FORMATFORMAT