una todas toda las excluir consultas consulta concatenar columnas columna campos sql postgresql types concatenation coalesce

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 character(n) (sinónimo: char(n) ). Use text o varchar . Detalles:

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