Comment déclarer et affecter une variable sur une seule ligne dans SQL

131

Je veux quelque chose comme

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

Des points bonus si vous me montrez comment encoder une citation dans la chaîne.

Par exemple:

Je veux que la chaîne soit lue

John said to Emily "Hey there Emily"

ma tentative serait

DECLARE myVariable nvarchar[MAX] = "John said to Emily \"Hey there Emily\""
Justin
la source
4
Le délimiteur de chaîne dans SQL Server ne l'est 'pas ".
Oded

Réponses:

184

Voici:

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

Vous remarquerez que le 'est échappé en le doublant en ''.

Puisque le délimiteur de chaîne est 'et non ", il n'est pas nécessaire de s'échapper ":

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

Le deuxième exemple de la page MSDN sur DECLAREmontre la syntaxe correcte.

Oded
la source
5
Vous pouvez également initialiser à partir d'une instruction select, par exemple: declare @eid uniqueidentifier = (select top 1 id de t_Event)
Damien Sawyer
13

sur sql 2008 c'est valide

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

sur SQL Server 2005, vous devez le faire

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

Vous l'avez presque:

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

Voir ici pour les documents

Pour les guillemets, SQL Server utilise des apostrophes, pas des guillemets:

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

Utilisez des apostrophes doubles si vous en avez besoin dans une chaîne:

DECLARE @myVariable nvarchar(max) = 'John said to Emily ''Hey there Emily''';
Daniel Renshaw
la source