¿Cómo puedo agregar un cero inicial a una columna varchar en la tabla y no sé la longitud de la columna? Si la columna no es nula, entonces debo agregar un cero inicial.
345 - la salida debe ser 0345
4567 - la salida debe ser 04567
Lo intenté:
SELECT lpad(column1,WHAT TO SPECIFY HERE?, '0') from table_name;Ejecutaré una consulta de actualización después de obtener esto.
Puede que estés pensando demasiado en esto. Usar concatenación simple:
SELECT '0' || column1 AS padded_col1 FROM table_name;Si la columna es NULL, no pasa nada: concatenar cualquier cosa a NULL devuelve NULL.
En particular, no use concat() . Obtendría '0' para columnas NULL, que no desea.
Si también tiene cadenas vacías ( '' ), es posible que deba hacer más, según lo que desee.
Y dado que mencionó su plan para actualizar la tabla: considere no hacer esto, está agregando ruido, que podría agregarse para mostrar con la expresión simple. Una VIEW podría ser útil para esto.
Si todos sus valores varchar son de hecho números válidos, use un tipo de datos numérico apropiado en su lugar y formato para mostrar con la misma expresión que arriba. La concatenación produce automáticamente un resultado de texto .
Si las circunstancias obligan a su mano y necesita actualizar de todos modos, considere esto:
UPDATE table_name SET column1 = '0' || column1 WHERE column1 IS DISTINCT FROM '0' || column1; La cláusula WHERE agregada para evitar actualizaciones vacías. Comparar:
intenta concat en su lugar?..
SELECT concat(0::text,column1) from table_name;