Die Verkettung von Zeichenfolgen funktioniert in SQLite nicht


136

Ich versuche, eine SQlite-Ersetzungsfunktion auszuführen, verwende jedoch ein anderes Feld in der Funktion.

select  locationname + '<p>' from location;

In diesem Snip ist das Ergebnis eine Liste von Nullen. Ich hätte eine Zeichenfolge mit dem Text von locationname und den '<p>'Literalen erwartet .

Antworten:


266

Versuchen Sie es ||anstelle von+

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

Aus der SQLite-Dokumentation :

Die || Der Operator ist "verkettet" - er verbindet die beiden Zeichenfolgen seiner Operanden.


26
Feld1 || field2 gibt null zurück, wenn eines der Felder null ist. Man könnte ifnull (Feld1, '') || ifnull (Feld2, '') machen wollen. Das gibt Ihnen eine Antwort, wenn eines oder beide Felder null sind. Dann müssen Sie herausfinden, was Sie tun möchten, wenn beide null wären.
Tom Cerul

5
@ TomCerul oder verwendenCOALESCE(nullable_field, '') || COALESCE(another_nullable_field, '')
zx8754

38

Der ||Operator ist die Verkettung in SQLite. Verwenden Sie diesen Code:

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

11
Die Doppelpipe ist auch die ANSI-Methode zum Verketten von Zeichenfolgen, die auch von Oracle und PostgreSQL unterstützt wird ...
OMG Ponies

32

Zum Vergleich,

SQLite ||  
Oracle CONCAT (string1, string2) oder ||
MySQL CONCAT (string1, string2, string3 ...) oder || wenn PIPES_AS_CONCAT aktiviert ist
Postgres CONCAT (string1, string2, string3 ...) oder ||
Microsoft SQL Server 2012+ CONCAT (Zeichenfolge1, Zeichenfolge2, Zeichenfolge3 ...) oder + 
Microsoft Access +  

1
Ab 2012 unterstützt SQL Server auchCONCAT(string1, string2, string3...)
Tim Cooke

1
MySQL unterstützt auch, ||wenn der PIPES_AS_CONCATModus aktiviert ist.
Paul Spiegel

2

In Visual Studio 2010 haben Sie Probleme mit der Verwendung von ||, wenn Sie den Datenquellen-Designer oder Assistenten verwenden Operator. Erstellen Sie eine Ansicht in der SQLite-Datenbank und erstellen Sie daraus Ihre Datenquelle (n).

Siehe auch diesen Thread .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.