La concaténation de chaînes ne fonctionne pas dans SQLite

136

J'essaie d'exécuter une fonction de remplacement SQlite, mais j'utilise un autre champ dans la fonction.

select  locationname + '<p>' from location;

Dans ce snip, le résultat est une liste de 0. J'aurais attendu une chaîne avec le texte de locationname et les '<p>'littéraux.

Ian Vink
la source

Réponses:

266

Essayez d'utiliser ||à la place de+

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

À partir de la documentation SQLite :

Le || L'opérateur est "concaténer" - il joint les deux chaînes de ses opérandes.

codaddict
la source
26
field1 || field2 renvoie null si l'un des champs est nul. On pourrait vouloir faire ifnull (field1, '') || ifnull (field2, ''). Cela vous donnera une réponse si un ou les deux champs sont nuls. Ensuite, vous pouvez déterminer ce que vous voulez faire si les deux étaient nuls.
Tom Cerul
5
@TomCerul ou utilisezCOALESCE(nullable_field, '') || COALESCE(another_nullable_field, '')
zx8754
38

L' ||opérateur est la concaténation dans SQLite. Utilisez ce code:

select  locationname || '<p>' from location;
shamittomar
la source
11
Le double tube est également la méthode ANSI de concaténation de chaînes, prise en charge également sur Oracle et PostgreSQL ...
OMG Ponies
32

En comparaison,

SQLite ||  
Oracle CONCAT (chaîne1, chaîne2) ou ||
MySQL CONCAT (chaîne1, chaîne2, chaîne3 ...) ou || si PIPES_AS_CONCAT activé
Postgres CONCAT (chaîne1, chaîne2, chaîne3 ...) ou ||
Microsoft SQL Server 2012+ CONCAT (chaîne1, chaîne2, chaîne3 ...) ou + 
Microsoft Access +  
Brian Burns
la source
1
À partir de 2012, SQL Server prend également en chargeCONCAT(string1, string2, string3...)
Tim Cooke
1
MySQL prend également en charge ||si le PIPES_AS_CONCATmode est activé.
Paul Spiegel
2

pour Visual Studio 2010, à l'aide du concepteur ou de l'assistant de sources de données, vous ne parvenez pas à utiliser || opérateur. Créez une vue dans la base de données sqlite et créez vos sources de données à partir de là.

Voir aussi ce fil .

dégainer rapidement
la source