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

102

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

select  locationname + '<p>' from location;

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

Теги:
string
operators
concatenation

4 ответа

203
Лучший ответ

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

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

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

|| оператор "concatenate" - он объединяет две строки своих операндов.

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

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

select  locationname || '<p>' from location;
  • 10
    Двойной канал также является методом объединения строк ANSI, также поддерживается в Oracle и PostgreSQL ...
19

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

SQLite                      ||  
Oracle                      CONCAT(string1, string2) or ||
MySQL                       CONCAT(string1, string2, string3...) or || if PIPES_AS_CONCAT enabled
Postgres                    CONCAT(string1, string2, string3...) or ||
Microsoft SQL Server 2012+  CONCAT(string1, string2, string3...) or + 
Microsoft Access            +  
  • 1
    Начиная с 2012 года, SQL Server также поддерживает CONCAT(string1, string2, string3...)
  • 1
    MySQL также поддерживает || если PIPES_AS_CONCAT режим PIPES_AS_CONCAT .
2

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

См. также этот поток.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню