Come posso dichiarare e assegnare una variabile su una singola riga in SQL


131

Voglio qualcosa del genere

DECLARE myVariable nvarchar[MAX] = "hello world".

Punti bonus se mi mostri come codificare un preventivo nella stringa.

Per esempio:

Voglio che la stringa legga

John said to Emily "Hey there Emily"

il mio tentativo sarebbe

DECLARE myVariable nvarchar[MAX] = "John said to Emily \"Hey there Emily\""

4
Il delimitatore di stringa in SQL Server 'non lo è ".
Oded,

Risposte:


184

Ecco qui:

DECLARE @var nvarchar(max) = 'Man''s best friend';

Noterai che 'è sfuggito raddoppiandolo ''.

Poiché il delimitatore di stringa è 'e non "è necessario, non è necessario eseguire la escape ":

DECLARE @var nvarchar(max) = '"My Name is Luca" is a great song';

Il secondo esempio nella pagina MSDN su DECLAREmostra la sintassi corretta.


5
È inoltre possibile inizializzare da un'istruzione select, ad esempio: declare @eid uniqueidentifier = (selezionare l'id 1 principale da t_Event)
Damien Sawyer

13

a sql 2008 questo è valido

DECLARE @myVariable nvarchar(Max) = 'John said to Emily "Hey there Emily"'
select @myVariable

su SQL Server 2005, è necessario farlo

DECLARE @myVariable nvarchar(Max) 
select @myVariable = 'John said to Emily "Hey there Emily"'
select @myVariable

3

Hai quasi capito:

DECLARE @myVariable nvarchar(max) = 'hello world';

Vedi qui per i documenti

Per le virgolette, SQL Server utilizza apostrofi, non virgolette:

DECLARE @myVariable nvarchar(max) = 'John said to Emily "Hey there Emily"';

Usa i doppi apostrofi se ne hai bisogno in una stringa:

DECLARE @myVariable nvarchar(max) = 'John said to Emily ''Hey there Emily''';
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.