A concatenação de cadeias não funciona no SQLite

136

Estou tentando executar uma função de substituição do SQlite, mas use outro campo na função.

select  locationname + '<p>' from location;

Neste recorte, o resultado é uma lista de 0s. Eu esperava uma string com o texto de locationname e os '<p>'literais.

Ian Vink
fonte

Respostas:

266

Tente usar ||no lugar de+

select  locationname || '<p>' from location;

Da documentação do SQLite :

O || O operador é "concatenado" - une as duas cadeias de caracteres de seus operandos.

codaddict
fonte
26
campo1 || campo2 retorna nulo se um dos campos for nulo. Alguém pode querer fazer ifnull (campo1, '') || ifnull (campo2, ''). Isso fornecerá uma resposta se um ou ambos os campos forem nulos. Então você começa a descobrir o que deseja fazer se ambos forem nulos.
Tom Cerul
5
@TomCerul or useCOALESCE(nullable_field, '') || COALESCE(another_nullable_field, '')
zx8754
38

O ||operador é a concatenação no SQLite. Use este código:

select  locationname || '<p>' from location;
shamittomar
fonte
11
O tubo duplo é também o método ANSI de cordas concatenando, suportado no Oracle e PostgreSQL também ...
OMG Pôneis
32

Para comparação,

SQLite ||  
Oracle CONCAT (string1, string2) ou ||
MySQL CONCAT (string1, string2, string3 ...) ou || se PIPES_AS_CONCAT ativado
CONCAT do Postgres (string1, string2, string3 ...) ou ||
Microsoft SQL Server 2012+ CONCAT (sequência1, sequência2, sequência3 ...) ou + 
Microsoft Access +  
Brian Burns
fonte
1
A partir de 2012, o SQL Server também oferece suporte aCONCAT(string1, string2, string3...)
Tim Cooke
1
O MySQL também suporta ||se o PIPES_AS_CONCATmodo estiver ativado.
Paul Spiegel
2

para o Visual Studio 2010, usando o designer ou assistente de fontes de dados, você está com problemas para usar || operador. Crie uma exibição no sqlite db e crie suas fontes de dados a partir disso.

Veja também este tópico .

desenho rápido
fonte