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.

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.


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;

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 +  

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 .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.