Конкатенация строк не работает в SQLite

136

Я пытаюсь выполнить функцию замены SQlite, но использую другое поле в функции.

select  locationname + '<p>' from location;

В этом фрагменте результатом является список 0. Я бы ожидал строку с текстом из locationname и '<p>'литералов.

Ян Винк
источник

Ответы:

266

Попробуйте использовать ||вместо+

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

Из документации SQLite :

|| Оператор «сцеплен» - он объединяет две строки своих операндов.

codaddict
источник
26
field1 || field2 возвращает значение NULL, если одно из полей имеет значение NULL. Можно хотеть сделать ifnull (field1, '') || ifnull (field2, ''). Это даст вам ответ, если одно или оба поля будут нулевыми. Затем вы выясните, что вы хотите сделать, если оба были нулевыми.
Том Черул
5
@TomCerul или используйтеCOALESCE(nullable_field, '') || COALESCE(another_nullable_field, '')
zx8754
38

||Оператор конкатенации в SQLite. Используйте этот код:

select  locationname || '<p>' from location;
shamittomar
источник
11
Двойной канал - это также метод объединения строк ANSI, поддерживаемый также в Oracle и PostgreSQL ...
OMG Ponies
32

Для сравнения,

SQLite ||  
Oracle CONCAT (строка1, строка2) или ||
MySQL CONCAT (строка1, строка2, строка3 ...) или || если PIPES_AS_CONCAT включен
Postgres CONCAT (строка1, строка2, строка3 ...) или ||
Microsoft SQL Server 2012+ CONCAT (строка1, строка2, строка3 ...) или + 
Microsoft Access +  
Брайан Бернс
источник
1
Начиная с 2012 года, SQL Server также поддерживаетCONCAT(string1, string2, string3...)
Тим Кук
1
MySQL также поддерживает, ||если PIPES_AS_CONCATрежим включен.
Пол Шпигель
2

для Visual Studio 2010, используя конструктор или мастер источников данных, у вас проблемы с || оператор. Создайте представление в базе данных sqlite и создайте из него ваши источники данных.

Смотрите также эту тему .

зарисовка
источник