Condividi tramite


Funzioni di conversione

Le funzioni di conversione CAST e CONVERT consentono di convertire le espressioni di un tipo di dati specifico in un tipo di dati diverso quando la conversione non viene eseguita automaticamente in SQL Server 2005. Se, ad esempio, si confrontano un'espressione char e un'espressione datetime, un'espressione smallint e un'espressione int oppure espressioni char di lunghezze diverse, tali espressioni vengono automaticamente convertite in SQL Server. Questo comportamento è denominato conversione implicita. Non è necessario utilizzare la funzione CAST o CONVERT per queste conversioni implicite. È tuttavia possibile utilizzare CAST e CONVERT negli scenari di conversione seguenti:

  • A due espressioni è associato lo stesso tipo di dati.
  • Due espressioni supportano la conversione implicita.
  • È necessaria la conversione esplicita dei tipi di dati.

Se si esegue una conversione non consentita, ad esempio la conversione nel tipo di dati int di un'espressione char contenente lettere dell'alfabeto, in SQL Server viene visualizzato un messaggio di errore.

Le funzioni CAST e CONVERT possono inoltre essere utilizzate per ottenere un'ampia gamma di formati di dati speciali, nella clausola WHERE, nell'elenco di selezione e in tutti i casi in cui è consentita un'espressione.

Per rendere il codice di programma Transact-SQL compatibile con SQL-92, utilizzare CAST anziché CONVERT. Utilizzare CONVERT anziché CAST per trarre vantaggio dalle funzionalità disponibili in CONVERT.

Quando si utilizza la funzione CAST o CONVERT, sono necessarie le informazioni seguenti:

  • Espressione da convertire. Nel caso di un report sulle vendite, ad esempio, è necessario convertire i dati dal tipo money al tipo character.
  • Tipo di dati in cui convertire l'espressione specificata, ad esempio varchar o qualsiasi altro tipo di dati di SQL Server.

Una conversione è valida solo per la durata della funzione CAST o CONVERT, a meno che il valore convertito non venga archiviato.

Se durante la conversione non viene specificata alcuna lunghezza per il tipo di dati, in SQL Server la lunghezza viene impostata automaticamente su 30.

Esempi

Negli esempi seguenti viene utilizzata la funzione CAST nella prima istruzione SELECT e la funzione CONVERT nella seconda istruzione SELECT per convertire la colonna Title in una colonna nvarchar(20) in modo da ridurre la lunghezza dei titoli.

USE AdventureWorks;
GO
SELECT CAST(Title AS nvarchar(20)) AS Title, Revision
FROM Production.Document
WHERE Revision < 2
GO

Oppure

USE AdventureWorks;
GO
SELECT CONVERT(nvarchar(20), Title) AS Title, Revision
FROM Production.Document
WHERE Revision < 2
GO

Set di risultati per entrambe le query:

Title                 Revision
--------------------  --------
Crank Arm and Tire M  0    
Front Reflector Brac  1    
Installing Replaceme  0    
Repair and Service G  0    
Training Wheels 2     1    

(5 row(s) affected)

Nell'esempio seguente la colonna HireDate di tipo datetime viene convertita in colonna char(11).

USE AdventureWorks
GO
SELECT c.FirstName, c.LastName, CAST(e.HireDate AS char(11)) AS HireDate 
FROM HumanResources.Employee e 
JOIN Person.Contact c ON e.EmployeeID = c.ContactID
WHERE c.FirstName = 'Kim'
GO

Set di risultati:

FirstName       LastName                       HireDate
---------       -----------------------        -----------
Kim             Abercrombie                    Dec 12 1997
Kim             Akers                          Mar 23 1998

(2 row(s) affected)

Vedere anche

Concetti

Conversione del tipo di dati (Motore di database)

Altre risorse

CAST e CONVERT (Transact-SQL)
Funzioni (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005