>Non c'è un modo per riuscire a concatenare 2 stringhe di cui
>la seconda incominciao con il carattere /?
A me funziona tutto correttamente:
DECLARE @ProgPrecedente as int,
@suffisso varchar(16),
@AProgPrecedente as varchar(16)
SET @suffisso = '/H'
SET @ProgPrecedente = 2952
SET @AProgPrecedente = CAST(@ProgPrecedente as varchar) + @suffisso
SELECT @AProgPrecedente AS Concatenazione
/* Output:
Concatenazione
----------------
2952/H
(1 row(s) affected)
*/
Il problema di cast lo avresti se tentassi di concatenare @ProgPrecedente (int) a @suffisso (varchar).
Dato che il data type int ha una precedenza superiore rispetto a varchar, SQL Server tenderà a castare implicitamente la variabile varchar a int ma se il contenuto non è numerico otterrai l'errore riportato nel primo post:
/* Tentativo di cast da char a int fallito */
SELECT 10 + '/5' AS Concatenazione;
/* Output
Concatenazione
--------------
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value '/5' to data type int.
*/
/* Cast impilcito da char a int */
SELECT 10 + '5' AS Concatenazione;
/* Output:
Concatenazione
--------------
15
(1 row(s) affected)
*/
/* Cast esplicito da int a char */
SELECT CAST(10 AS char(2)) + '/5' AS Concatenazione;
/* Output
Concatenazione
--------------
10/5
(1 row(s) affected)
*/
Per maggiori info leggi questo paragrafo dei Books Online:
"Data Type Precedence (Transact-SQL)"
http://msdn2.microsoft.com/en-us/library/ms190309.aspx
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org