todas - excluir columna consulta sql
Cómo concatenar columnas en un Postgres SELECT? (6)
Cualesquiera que sean los tipos de datos reales que se encuentran detrás de la cortina, puede "arreglar" su declaración al casting al text
. Cualquier tipo se puede convertir a text
:
SELECT a::text || '', '' || b::text AS ab FROM foo;
Si se pueden involucrar valores NULL
, use concat_ws()
para evitar resultados NULL
para uno o más argumentos NULL
(Postgres 9.1 o posterior):
SELECT concat_ws('', '', a::text, b::text) AS ab FROM foo;
O simplemente concat_ws() si no necesita separadores:
SELECT concat(a::text, b::text) AS ab FROM foo;
Más detalles (y por qué COALESCE
es un sustituto deficiente) en esta respuesta relacionada:
En cuanto a la actualización en el comment
+
no es un operador válido para la concatenación de cadenas en Postgres (o el estándar SQL). Es una idea privada de Microsoft agregar esto a sus productos.
Apenas hay una buena razón para usar el (sinónimo: character(n)
). Use char(n)
text
o varchar
. Detalles:
- ¿Alguna desventaja de utilizar el tipo de datos "texto" para almacenar cadenas?
- La mejor manera de verificar si hay "valor vacío o nulo"
De cualquier manera, la declaración solo funcionaría en Postgres moderno con cualquier tipo de carácter. Tratar:
SELECT ''a ''::character(2) || ''b ''::character(2);
Debe involucrar otros tipos de datos.
Tengo dos columnas de cadena a
y b
.
Por lo tanto, select a,b from foo
devuelve los valores a
y b
. Sin embargo, la concatenación de b
no funciona. Lo intenté :
select a || b from foo
y
select a||'', ''||b from foo
Mensaje de error de OP (de los comentarios):
Ningún operador coincide con el nombre y el tipo de argumento. Es posible que necesite agregar moldes de tipo explícitos.
También afirmó que ambos campos son character(2)
.
El problema estaba en nulos en los valores; entonces la concatenación no funciona con nulos. La solución es la siguiente:
SELECT coalesce(a, '''') || coalesce(b, '''') FROM foo;
Las funciones de CONCAT a veces no funcionan con la versión anterior de postgreSQL
ver lo que solía resolver el problema sin usar CONCAT
u.first_name || '' '' || u.last_name as user,
O también puedes usar
"first_name" || '' '' || "last_name" as user,
en el segundo caso, utilicé comillas dobles para first_name y last_name
Espero que esto sea útil, gracias
Por ejemplo, si hay una tabla de empleados que consta de columnas como:
employee_number,f_name,l_name,email_id,phone_number
si queremos concatenar f_name + l_name
como name
.
SELECT employee_number,f_name ::TEXT ||'',''|| l_name::TEXT AS "NAME",email_id,phone_number,designation FROM EMPLOYEE;
Prueba esto
select textcat(textcat(FirstName,'' ''),LastName) AS Name from person;
es mejor usar la función CONCAT en PostgreSQL para la concatenación
Por ejemplo: select CONCAT(first_name,last_name) from person where pid = 136
si está usando column_a || '''' || column_b para concatenación para columna 2, si cualquiera de los valores en column_a o column_b es consulta nula, devolverá valor nulo. que puede no ser preferido en todos los casos ... así que en lugar de esto
||
utilizar
CONCAT
devolverá un valor relevante si alguno de ellos tiene valor