La concatenación de cadenas no funciona en SQLite

136

Estoy tratando de ejecutar una función de reemplazo SQlite, pero uso otro campo en la función.

select  locationname + '<p>' from location;

En este recorte, el resultado es una lista de 0s. Hubiera esperado una cadena con el texto de locationname y los '<p>'literales.

Ian Vink
fuente

Respuestas:

266

Intente usar ||en lugar de+

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

De la documentación de SQLite :

El || El operador es "concatenar": une las dos cadenas de sus operandos.

codictorio
fuente
26
campo1 || field2 devuelve nulo si uno de los campos es nulo. Es posible que desee hacer ifnull (field1, '') || ifnull (field2, ''). Eso le dará una respuesta si uno o ambos campos son nulos. Luego puedes averiguar qué quieres hacer si ambos son nulos.
Tom Cerul
55
@TomCerul o usoCOALESCE(nullable_field, '') || COALESCE(another_nullable_field, '')
zx8754
38

El ||operador es la concatenación en SQLite. Usa este código:

select  locationname || '<p>' from location;
shamittomar
fuente
11
La doble tubería también es el método ANSI de concatenación de cadenas, también compatible con Oracle y PostgreSQL ...
OMG Ponies
32

Para comparacion,

SQLite ||  
Oracle CONCAT (cadena1, cadena2) o ||
MySQL CONCAT (cadena1, cadena2, cadena3 ...) o || si PIPES_AS_CONCAT habilitado
Postgres CONCAT (cadena1, cadena2, cadena3 ...) o ||
Microsoft SQL Server 2012+ CONCAT (cadena1, cadena2, cadena3 ...) o + 
Microsoft Access +  
Brian Burns
fuente
1
A partir de 2012, SQL Server también es compatibleCONCAT(string1, string2, string3...)
Tim Cooke,
1
MySQL también es compatible ||si el PIPES_AS_CONCATmodo está habilitado.
Paul Spiegel
2

para Visual Studio 2010, con el diseñador o asistente de orígenes de datos, tiene problemas para usar || operador. Cree una vista en el sqlite db y cree sus fuentes de datos a partir de eso.

Ver también este hilo .

dibujo rapido
fuente