2010-08-25 14 views
109

Sto tentando di eseguire una funzione di sostituzione SQlite, ma utilizzare un altro campo nella funzione.La concatenazione di stringhe non funziona in SQLite

select locationname + '<p>' from location; 

In questo attacco, il risultato è un elenco di 0. Mi sarei aspettato una stringa con il testo da locationname e i valori letterali '<p>'.

risposta

219

Provate ad usare || al posto di +

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

Da SQLite documentation:

Il || l'operatore è "concatenato" - unisce le due stringhe dei suoi operandi.

+2

+1: Lei è stato prima –

+23

campo1 || field2 restituisce null se uno dei campi è nullo. Si potrebbe voler fare ifnull (field1, '') || ifnull (field2, ''). Questo ti darà una risposta se uno o entrambi i campi sono nulli. Quindi si arriva a capire cosa si vuole fare se entrambi fossero nulli. –

+2

@ TomCerul o usare 'COALESCE (nullable_field, '') || COALESCE (another_nullable_field, '') ' – zx8754

36

L'operatore || è la concatenazione in SQLite. Utilizzare questo codice:

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

Il double pipe è anche il metodo ANSI di concatenazione di stringhe, supportato anche su Oracle e PostgreSQL ... –

2

per Visual Studio 2010, utilizzando il progettista o la procedura guidata Origini dati, si è in difficoltà utilizzando || operatore. Crea una vista nel db sqlite e crea le tue origini dati da quella.

Vedere anche this thread.

20

Per confronto,

 
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

A partire dal 2012, SQL Server supporta anche' CONCAT (string1, string2, string3 ...) ' –

+0

@TimCooke Grazie, aggiornato :) –

+0

@ bburns.km Hai votato per attraversare i punti 3K: D –