Nei post SQL Server 2012 FileTable e La paginazione dei dati in SQL Server 2008 e con la CTP3 di denali ho brevemente descritto due nuove funzionalità estremamente interessanti della nuova versione..... Ovviamente le "innovazioni" non si fermano qui.
Vediamo allora altre nuove funzionalità di SQL Server 2012.
1. Concatenazione di stringhe con CONCAT
Grazie alla funzione CONCAT possiamo concatenare stringhe senza preoccuparci di eventuali NULL.
--SQL 2000, 2005,2008,2008R2 Select 'Hello ' + ' world ' + null --SQL 2012 select concat('Hello ',' world', null)
2. Selezione di un valore da una lista con CHOOSE
Immaginate di avere una lista di valori e di voler scegliere un determinato item conoscendone la posizione nella lista. La funzione CHOOSE implementa esattamente tutto questo.
Select choose(3,'A','B','C','D','E')
3. Selezione di valori con IIF
La funzione IIF consente di selezionare il valore da utilizzare in base ad una condizione. Nelle edizioni precedenti era necessario utilizzare il CASE.
--SQL 2005,2008,2008R2 Declare @val1 tinyint = 2 Declare @val2 tinyint = 1 Select Case When @val1 > @val2 then 'Return Val1' else 'Return Val2' End GO --SQL 2012 Declare @val1 tinyint = 2 Declare @val2 tinyint = 1 Select IIF(@val1 > @val2,'Return Val1','Return Val2') Go
4. Conversione di valori utilizzando TRY_CONVERT
La funzione TRY_CONVERT tenta di convertire il valore passato sul tipo specificato. Se la conversione va a buon fine restituisce il valore nel nuovo formato, se fallisce NULL
--SQL 2005,2008,2008R2 Declare @val1 varchar(12) = 'string value' begin try Select cast(@val1 as tinyint) Select 'Cast Succeeded' end try begin catch Select ERROR_NUMBER(),ERROR_MESSAGE() Select 'Cast Failed' end catch GO --SQL 2012 Declare @val1 varchar(12) = 'string value' --'1' Select TRY_CONVERT(tinyint,@val1) Select IIF(TRY_CONVERT(tinyint,@val1)is null,'Cast Failed', 'Cast Succeeded')
5. Conversione di valori utilizzando TRY_PARSE
La funzione TRY_PARSE tenta di convertire il valore passato sul tipo specificato. Se la conversione va a buon fine restituisce il valore nel nuovo formato, se fallisce NULL. Rispetto alla TRY_CONVERT consente di specificare il parametro culture
Select TRY_PARSE('31/12/2011' as date using 'it-IT')
6. Scoprire l'ultimo giorno del mese con la funzione EOMONTH
La funzione EOMONTH restituisce l'ultimo giorno del mese specificato.
--SQL 2005,2008,2008R2 Declare @date date = getdate() declare @month varchar(2) declare @year varchar(4) Declare @firstdaymonth varchar(8) Select @month = DATEPART(month,@date) If LEN(@month)<2 SET @month = '0' + @month Select @year = DATEPART(year,@date) Select @firstdaymonth = @year + @month + '01' Select DATEADD(day,-1, DATEADD(month,1,@firstdaymonth)) GO --SQL 2012 Select eomonth(getdate()) GO7. trasformare in una data 3 valori separati che rappresentano anno, mese giorno con DATEFROMPARTS Dati anno, mese, giorno la funzione DATEFROMPARTS restituisce una data.
--SQL 2005,2008,2008R2 Declare @date date = getdate() Declare @day varchar(2) declare @month varchar(2) declare @year varchar(4) Select @month = DATEPART(month,@date) If LEN(@month)<2 SET @month = '0' + @month Select @day = DATEPART(day,@date) If LEN(@day)<2 SET @day = '0' + @day Select @year = DATEPART(year,@date) Select convert(date, @year + @month + @day) GO --SQL 2012 Declare @date date = getdate() Declare @day int = DATEPART(day,@date) declare @month int = DATEPART(month,@date) declare @year int = DATEPART(year,@date) Select DATEFROMPARTS(@year,@month,@day) GO
IIF non mi funziona col sql server 2012 dice funzione non riconosciuta
RispondiEliminaPuoi postare l'errore esatto ed il codice ?
Elimina