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.