SQL
Funzioni (scalare / riga singola)
Ricerca…
introduzione
SQL offre diverse funzioni scalari incorporate. Ogni funzione scalare prende un valore come input e restituisce un valore come output per ogni riga in un set di risultati.
Le funzioni scalari vengono utilizzate ovunque sia consentita un'espressione all'interno di un'istruzione T-SQL.
Sintassi
- CAST (espressione AS data_type [(lunghezza)])
- CONVERT (data_type [(length)], expression [, style])
- PARSE (string_value AS data_type [USING culture])
- DATENAME (datapart, data)
- GETDATE ()
- DATEDIFF (datapart, startdate, enddate)
- DATEADD (datapart, numero, data)
- SCEGLI (indice, val_1, val_2 [, val_n])
- IIF (boolean_expression, true_value, false_value)
- SIGN (espressione numerica)
- POTENZA (float_expression, y)
Osservazioni
Le funzioni scalari o a riga singola vengono utilizzate per gestire ciascuna riga di dati nel set di risultati, al contrario delle funzioni aggregate che operano sull'intero set di risultati.
Esistono dieci tipi di funzioni scalari.
- Le funzioni di configurazione forniscono informazioni sulla configurazione dell'istanza SQL corrente.
- Le funzioni di conversione convertono i dati nel tipo di dati corretto per una determinata operazione. Ad esempio, questi tipi di funzioni possono riformattare le informazioni convertendo una stringa in una data o un numero per consentire la comparazione di due diversi tipi.
- Le funzioni di data e ora manipolano i campi contenenti i valori di data e ora. Possono restituire valori numerici, di data o di stringa. Ad esempio, è possibile utilizzare una funzione per recuperare il giorno corrente della settimana o dell'anno o recuperare solo l'anno dalla data.
I valori restituiti dalle funzioni di data e ora dipendono dalla data e dall'ora impostate per il sistema operativo del computer che esegue l'istanza SQL.
- Funzione logica che esegue operazioni utilizzando operatori logici. Valuta un insieme di condizioni e restituisce un singolo risultato.
- Le funzioni matematiche eseguono operazioni matematiche, o calcoli, su espressioni numeriche. Questo tipo di funzione restituisce un singolo valore numerico.
- Le funzioni di metadati recuperano le informazioni su un database specificato, come il nome e gli oggetti del database.
- Le funzioni di sicurezza forniscono informazioni che è possibile utilizzare per gestire la sicurezza di un database, ad esempio informazioni su utenti e ruoli del database.
- Le funzioni stringa eseguono operazioni su valori stringa e restituiscono valori numerici o stringa.
Utilizzando le funzioni di stringa, è possibile, ad esempio, combinare dati, estrarre una sottostringa, confrontare stringhe o convertire una stringa in caratteri maiuscoli o minuscoli.
- Le funzioni di sistema eseguono operazioni e restituiscono informazioni su valori, oggetti e impostazioni per l'istanza SQL corrente
- Le funzioni statistiche di sistema forniscono varie statistiche sull'istanza SQL corrente, ad esempio per monitorare i livelli di prestazioni correnti del sistema.
Modifiche del personaggio
Le funzioni di modifica dei caratteri includono la conversione di caratteri in caratteri maiuscoli o minuscoli, la conversione di numeri in numeri formattati, l'esecuzione di manipolazioni di caratteri, ecc.
La funzione lower(char)
converte il dato parametro di carattere in caratteri a caratteri bassi.
SELECT customer_id, lower(customer_last_name) FROM customer;
restituire il cognome del cliente modificato da "SMITH" a "smith".
Data e ora
In SQL, si utilizzano tipi di dati di data e ora per memorizzare le informazioni del calendario. Questi tipi di dati includono ora, data, ora minima, datetime, datetime2 e datetimeoffset. Ogni tipo di dati ha un formato specifico.
Tipo di dati | Formato |
---|---|
tempo | hh: mm: ss [.nnnnnnn] |
Data | AAAA-MM-DD |
smalldatetime | AAAA-MM-GG hh: mm: ss |
appuntamento | AAAA-MM-GG hh: mm: ss [.nnn] |
datetime2 | AAAA-MM-GG hh: mm: ss [.nnnnnnn] |
datetimeoffset | AAAA-MM-GG hh: mm: ss [.nnnnnnn] [+/-] hh: mm |
La funzione DATENAME
restituisce il nome o il valore di una parte specifica della data.
SELECT DATENAME (weekday,'2017-01-14') as Datename
DATENAME |
---|
Sabato |
Si utilizza la funzione GETDATE
per determinare la data e l'ora correnti del computer che esegue l'istanza SQL corrente. Questa funzione non include la differenza del fuso orario.
SELECT GETDATE() as Systemdate
Systemdate |
---|
2017-01-14 11: 11: 47.7230728 |
La funzione DATEDIFF
restituisce la differenza tra due date.
Nella sintassi, datepart è il parametro che specifica quale parte della data che si desidera utilizzare per calcolare la differenza. La datapart può essere anno, mese, settimana, giorno, ora, minuto, secondo o millisecondo. Quindi si specifica la data di inizio nel parametro startdate e la data di fine nel parametro enddate per il quale si desidera trovare la differenza.
SELECT SalesOrderID, DATEDIFF(day, OrderDate, ShipDate)
AS 'Processing time'
FROM Sales.SalesOrderHeader
SalesOrderID | Tempo di elaborazione |
---|---|
43659 | 7 |
43660 | 7 |
43661 | 7 |
43662 | 7 |
La funzione DATEADD
consente di aggiungere un intervallo a una parte di una data specifica.
SELECT DATEADD (day, 20, '2017-01-14') AS Added20MoreDays
Added20MoreDays |
---|
2017-02-03 00: 00: 00.000 |
Funzione di configurazione e conversione
Un esempio di una funzione di configurazione in SQL è la funzione @@SERVERNAME
. Questa funzione fornisce il nome del server locale su cui è in esecuzione SQL.
SELECT @@SERVERNAME AS 'Server'
server |
---|
SQL064 |
In SQL, la maggior parte delle conversioni di dati si verificano implicitamente, senza alcun intervento da parte dell'utente.
Per eseguire conversioni che non possono essere completate implicitamente, è possibile utilizzare le funzioni CAST
o CONVERT
.
La sintassi della funzione CAST
è più semplice della sintassi della funzione CONVERT
, ma è limitata in ciò che può fare.
Qui, utilizziamo entrambe le funzioni CAST
e CONVERT
per convertire il tipo di dati datetime nel tipo di dati varchar
.
La funzione CAST
usa sempre l'impostazione di stile predefinita. Ad esempio, rappresenterà le date e le ore utilizzando il formato AAAA-MM-GG.
La funzione CONVERT
usa lo stile di data e ora specificato. In questo caso, 3 specifica il formato data gg / mm / aa.
USE AdventureWorks2012
GO
SELECT FirstName + ' ' + LastName + ' was hired on ' +
CAST(HireDate AS varchar(20)) AS 'Cast',
FirstName + ' ' + LastName + ' was hired on ' +
CONVERT(varchar, HireDate, 3) AS 'Convert'
FROM Person.Person AS p
JOIN HumanResources.Employee AS e
ON p.BusinessEntityID = e.BusinessEntityID
GO
lanciare | Convertire |
---|---|
David Hamiltion è stato assunto il 2003-02-04 | David Hamiltion è stato assunto il 04/02/03 |
Un altro esempio di una funzione di conversione è la funzione PARSE
. Questa funzione converte una stringa in un tipo di dati specificato.
Nella sintassi della funzione, si specifica la stringa che deve essere convertita, la parola chiave AS
e quindi il tipo di dati richiesto. Facoltativamente, è anche possibile specificare la cultura in cui il valore stringa deve essere formattato. Se non lo si specifica, viene utilizzata la lingua per la sessione.
Se il valore stringa non può essere convertito in formato numerico, data o ora, si verificherà un errore. Dovrai quindi utilizzare CAST
o CONVERT
per la conversione.
SELECT PARSE('Monday, 13 August 2012' AS datetime2 USING 'en-US') AS 'Date in English'
Data in inglese |
---|
2012-08-13 00: 00: 00.0000000 |
Funzione logica e matematica
SQL ha due funzioni logiche: CHOOSE
e IIF
.
La funzione CHOOSE
restituisce un elemento da un elenco di valori, in base alla sua posizione nell'elenco. Questa posizione è specificata dall'indice.
Nella sintassi, il parametro index specifica l'elemento ed è un numero intero o intero. Il parametro val_1 ... val_n identifica l'elenco di valori.
SELECT CHOOSE(2, 'Human Resources', 'Sales', 'Admin', 'Marketing' ) AS Result;
Risultato |
---|
I saldi |
In questo esempio, si utilizza la funzione CHOOSE
per restituire la seconda voce in un elenco di reparti.
La funzione IIF
restituisce uno di due valori, in base a una particolare condizione. Se la condizione è vera, restituirà il valore vero. Altrimenti restituirà un valore falso.
Nella sintassi, il parametro boolean_expression specifica l'espressione booleana. Il parametro true_value specifica il valore che deve essere restituito se boolean_expression restituisce true e il parametro false_value specifica il valore che deve essere restituito se boolean_expression restituisce false.
SELECT BusinessEntityID, SalesYTD,
IIF(SalesYTD > 200000, 'Bonus', 'No Bonus') AS 'Bonus?'
FROM Sales.SalesPerson
GO
BusinessEntityID | SalesYTD | Bonus? |
---|---|---|
274 | 559697.5639 | indennità |
275 | 3763178.1787 | indennità |
285 | 172524.4512 | Nessun bonus |
In questo esempio, si utilizza la funzione IIF per restituire uno dei due valori. Se le vendite da inizio anno a un venditore sono superiori a 200.000, questa persona avrà diritto a un bonus. Valori inferiori a 200.000 significano che i dipendenti non si qualificano per i bonus.
SQL include diverse funzioni matematiche che è possibile utilizzare per eseguire calcoli sui valori di input e restituire risultati numerici.
Un esempio è la funzione SIGN
, che restituisce un valore che indica il segno di un'espressione. Il valore di -1 indica un'espressione negativa, il valore di +1 indica un'espressione positiva e 0 indica zero.
SELECT SIGN(-20) AS 'Sign'
Cartello |
---|
-1 |
Nell'esempio, l'input è un numero negativo, quindi il riquadro Risultati elenca il risultato -1.
Un'altra funzione matematica è la funzione POWER
. Questa funzione fornisce il valore di un'espressione elevata a una potenza specificata.
Nella sintassi, il parametro float_expression specifica l'espressione e il parametro y specifica la potenza a cui si desidera aumentare l'espressione.
SELECT POWER(50, 3) AS Result
Risultato |
---|
125000 |