Łączenie ciągów nie działa w SQLite


136

Próbuję wykonać funkcję zamiany SQlite, ale używam innego pola w funkcji.

select  locationname + '<p>' from location;

W tym wycinku wynikiem jest lista zer. Spodziewałbym się łańcucha z tekstem z nazwy lokalizacji i '<p>'literałów.

Odpowiedzi:


266

Spróbuj użyć ||zamiast+

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

Z dokumentacji SQLite :

|| operator jest „konkatenowany” - łączy ze sobą dwa łańcuchy swoich operandów.


26
pole 1 || field2 zwraca wartość null, jeśli jedno z pól ma wartość null. Można by chcieć zrobić ifnull (field1, '') || ifnull (field2, ''). To da ci odpowiedź, jeśli jedno lub oba pola są puste. Następnie możesz dowiedzieć się, co chcesz zrobić, jeśli oba byłyby zerowe.
Tom Cerul

5
@TomCerul lub użyjCOALESCE(nullable_field, '') || COALESCE(another_nullable_field, '')
zx8754

38

||Operator jest konkatenacją w SQLite. Użyj tego kodu:

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

11
Podwójny potok jest również metodą łączenia ciągów według ANSI, obsługiwaną również przez Oracle i PostgreSQL ...
OMG Kucyki

32

Dla porownania,

SQLite ||  
Oracle CONCAT (ciąg1, ciąg2) lub ||
MySQL CONCAT (ciąg1, ciąg2, ciąg3 ...) lub || jeśli PIPES_AS_CONCAT jest włączony
Postgres CONCAT (ciąg1, ciąg2, ciąg3 ...) lub ||
Microsoft SQL Server 2012+ CONCAT (ciąg1, ciąg2, ciąg3 ...) lub + 
Microsoft Access +  

1
Począwszy od 2012 r., SQL Server obsługuje równieżCONCAT(string1, string2, string3...)
Tim Cooke

1
MySQL obsługuje również, ||jeśli PIPES_AS_CONCATtryb jest włączony.
Paul Spiegel

2

w przypadku programu Visual Studio 2010 przy użyciu projektanta lub kreatora źródeł danych masz problem z używaniem || operator. Utwórz widok w bazie danych sqlite i utwórz z tego źródła danych.

Zobacz także ten wątek .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.