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


136

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

select  locationname + '<p>' from location;

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

Ответы:


266

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

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

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

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


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;

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 и создайте из него ваши источники данных.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.