La concatenazione di stringhe non funziona in SQLite


136

Sto cercando di eseguire una funzione di sostituzione SQlite, ma uso un altro campo nella funzione.

select  locationname + '<p>' from location;

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

Risposte:


266

Prova a utilizzare ||al posto di+

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

Dalla documentazione di SQLite :

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


26
campo1 || field2 restituisce null se uno dei campi è null. Si potrebbe voler fare ifnull (field1, '') || ifnull (field2, ''). Questo ti darà una risposta se uno o entrambi i campi sono nulli. Quindi riesci a capire cosa vuoi fare se entrambi fossero nulli.
Tom Cerul,

5
@ TomCerul o utilizzareCOALESCE(nullable_field, '') || COALESCE(another_nullable_field, '')
zx8754,

38

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

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

11
Il double pipe è anche il metodo ANSI per concatenare le stringhe, supportato anche su Oracle e PostgreSQL ...
OMG Ponies

32

Per confronto,

SQLite ||  
Oracle CONCAT (stringa1, stringa2) o ||
MySQL CONCAT (string1, string2, string3 ...) o || se PIPES_AS_CONCAT abilitato
Postgres CONCAT (stringa1, stringa2, stringa3 ...) o ||
CONCAT di Microsoft SQL Server 2012+ (string1, string2, string3 ...) o + 
Microsoft Access +  

1
A partire dal 2012, SQL Server supporta ancheCONCAT(string1, string2, string3...)
Tim Cooke,

1
MySQL supporta anche ||se la PIPES_AS_CONCATmodalità è abilitata.
Paul Spiegel,

2

per Visual Studio 2010, utilizzando il designer o la procedura guidata Origini dati, hai problemi con || operatore. Crea una vista nel db sqlite e crea le tue origini dati da quella.

Vedi anche questa discussione .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.