Como declarar e atribuir uma variável em uma única linha no SQL

131

Eu quero algo como

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

Pontos de bônus se você me mostrar como codificar uma citação na string.

Por exemplo:

Eu quero que a string leia

John said to Emily "Hey there Emily"

minha tentativa seria

DECLARE myVariable nvarchar[MAX] = "John said to Emily \"Hey there Emily\""
Justin
fonte
4
O delimitador de seqüência de caracteres no SQL Server é ', não ".
Oded

Respostas:

184

Aqui vai:

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

Você notará que o 'escape é duplicado para ''.

Como o delimitador de string é 'e não ", não há necessidade de escapar ":

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

O segundo exemplo na página MSDN na DECLAREmostra a sintaxe correta.

Oded
fonte
5
Você também pode inicializar a partir de uma instrução SELECT, por exemplo: Declare @eid uniqueidentifier = (select top 1 ID de t_Event)
Damien Sawyer
13

no sql 2008 isso é válido

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

no sql server 2005, você precisa fazer isso

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

Você quase conseguiu:

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

Veja aqui os documentos

Para as aspas, o SQL Server usa apóstrofos, não aspas:

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

Use apóstrofos duplos se precisar deles em uma sequência:

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