Зв'язок рядків не працює в SQLite


136

Я намагаюся виконати функцію заміни SQlite, але використовую інше поле функції.

select  locationname + '<p>' from location;

У цьому фрагменті результат - список 0. Я б очікував, що рядок з текстом від імені місцезнаходження та '<p>'літералів.

Відповіді:


266

Спробуйте використовувати ||замість+

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

З документації на SQLite :

|| Оператор "з'єднаний" - він об'єднує два рядки своїх операндів.


26
поле1 || 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 (string1, string2) або ||
MySQL CONCAT (string1, string2, string3 ...) або || якщо PIPES_AS_CONCAT увімкнено
Postgres CONCAT (string1, string2, string3 ...) або ||
Microsoft SQL Server 2012+ CONCAT (string1, string2, string3 ...) або + 
Microsoft Access +  

1
Починаючи з 2012 року, SQL Server також підтримуєCONCAT(string1, string2, string3...)
Тім Кук

1
MySQL також підтримує, ||якщо PIPES_AS_CONCATрежим включений.
Пол Шпігель

2

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

Дивіться також цю нитку .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.