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.

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.


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;

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 +  

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 .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.