Opción Cantidad máxima de columnas

Cantidad máxima de columnas es la línea más larga que el formateador deja en su salida. Esta página explica exactamente cómo se parten las líneas largas, qué es lo que la opción deliberadamente no hace y cómo elegir un ancho, incluido 0 para desactivar el corte de líneas.

Qué hace la opción

El formateo ocurre en dos etapas. Primero se arma la disposición de la consulta: una cláusula por línea, un elemento del select por línea, joins y condiciones en sus propias líneas, subconsultas con sangría. Después, como paso final, se mide cada línea de la salida. Una línea que cabe dentro del límite se deja como está. Una línea más larga se corta en el último espacio que mantiene la primera parte dentro del límite, y el resto continúa en una nueva línea con 2 espacios más de sangría que la línea de la que salió. Si la continuación sigue siendo demasiado larga, se repite el mismo corte sobre ella.

En la práctica, las líneas largas casi siempre son elementos calculados del select y condiciones del WHERE con expresiones largas. Las consultas cortas no se ven afectadas en absoluto.

Valores posibles y valor predeterminado

ValorResultado
120 (predeterminado)Se parten las líneas de más de 120 caracteres.
Cualquier otro número hasta 9999Se parten las líneas más largas que ese número. Una línea de exactamente esa longitud se conserva.
0El corte de líneas está desactivado. Las líneas quedan tan largas como las deja la disposición.

La misma consulta con varios anchos

La consulta de abajo tiene una columna calculada larga y una condición larga. Con el valor predeterminado de 120, solo el elemento del select es demasiado largo (131 caracteres), así que únicamente su alias pasa a una línea de continuación. Con 60, se parten tanto la expresión como la condición.

Antes
select order_id, base_amount + freight_amount + insurance_amount + handling_fee - store_credit - gift_card_amount - promo_discount as amount_due from order_lines where base_amount + freight_amount + insurance_amount > minimum_order_value + regional_surcharge
Después, formateado por SQL Format
Opciones: Espacios de sangría 4 · Cantidad máxima de columnas 120 · Comas: Después · Palabras clave: Mayúsculas · Paréntesis en nueva línea: no
SELECT order_id,
    base_amount + freight_amount + insurance_amount + handling_fee - store_credit - gift_card_amount - promo_discount
      AS amount_due
FROM order_lines
WHERE base_amount + freight_amount + insurance_amount > minimum_order_value + regional_surcharge
Después, formateado por SQL Format
Opciones: Espacios de sangría 4 · Cantidad máxima de columnas 60 · Comas: Después · Palabras clave: Mayúsculas · Paréntesis en nueva línea: no
SELECT order_id,
    base_amount + freight_amount + insurance_amount +
      handling_fee - store_credit - gift_card_amount -
      promo_discount AS amount_due
FROM order_lines
WHERE base_amount + freight_amount + insurance_amount >
  minimum_order_value + regional_surcharge

Con 40, la misma regla simplemente se aplica más veces. Observa que cada línea de continuación tiene exactamente 2 espacios más de sangría que su primera línea: 6 espacios para el elemento del select, que empieza en 4, y 2 espacios para la condición, que empieza en la columna 0.

Después, formateado por SQL Format
Opciones: Espacios de sangría 4 · Cantidad máxima de columnas 40 · Comas: Después · Palabras clave: Mayúsculas · Paréntesis en nueva línea: no
SELECT order_id,
    base_amount + freight_amount +
      insurance_amount + handling_fee -
      store_credit - gift_card_amount -
      promo_discount AS amount_due
FROM order_lines
WHERE base_amount + freight_amount +
  insurance_amount >
  minimum_order_value +
  regional_surcharge

Con 0 no se parte nada. El elemento del select queda en una sola línea de 131 caracteres y la condición en una línea de 96 caracteres:

Después, formateado por SQL Format
Opciones: Espacios de sangría 4 · Cantidad máxima de columnas 0 (sin ajuste de línea) · Comas: Después · Palabras clave: Mayúsculas · Paréntesis en nueva línea: no
SELECT order_id,
    base_amount + freight_amount + insurance_amount + handling_fee - store_credit - gift_card_amount - promo_discount AS amount_due
FROM order_lines
WHERE base_amount + freight_amount + insurance_amount > minimum_order_value + regional_surcharge

Lo que no hace

Como el corte de líneas es un paso final sobre el texto y no forma parte de la disposición, conviene tener en cuenta algunas cosas:

  • No vuelve a armar las cláusulas. Un límite amplio nunca junta los elementos del select en una sola línea, y un límite estrecho nunca mueve una condición o un join completo a otro lugar. La estructura de cláusulas es idéntica con cualquier ancho; compara las salidas con 0 y con 120 de arriba.
  • No busca un punto de corte lógico. El corte se hace en el último espacio que cabe, que puede caer entre un operador y su operando o entre AS y el alias, como muestra el ejemplo con 120. No prefiere cortar antes de un + ni después de una coma. Cuando el último espacio que cabe está justo después de una coma, la coma se queda al final de la primera línea, como en NUMERIC(18, seguido de 4) en la línea de continuación.
  • Nunca corta dentro de texto entre comillas ni de comentarios. Los literales de cadena, los identificadores entre comillas y los comentarios -- o /* */ se mantienen enteros, y el texto de un comentario nunca termina en una línea donde se leería como SQL. Una línea que es larga solo por un literal o un comentario largo puede quedar por encima del límite.
  • Nunca parte una palabra. Un identificador más largo que el límite pasa a una línea propia y queda por encima del límite.
  • No une líneas. Subir el límite nunca junta líneas que la disposición mantiene separadas.

Por eso, trata la opción como una red de seguridad que mantiene las líneas dentro de tu pantalla o de tu herramienta de revisión, no como una forma de diseñar la estructura de una consulta. Si una expresión se parte tres veces con el ancho que elegiste, la solución legible suele estar en el SQL: mueve el cálculo a una CTE o a una columna derivada con un alias claro, como se muestra en formateo de consultas complejas.

Cómo elegir un ancho

  • 120 (predeterminado). Cabe en una ventana de editor típica con la barra lateral abierta y coincide con el límite de línea que muchos equipos ya usan para el código de la aplicación. La mayoría de las consultas bien estructuradas nunca llega a él.
  • De 80 a 100. Útil cuando el SQL se revisa en diffs lado a lado, se lee en una terminal o se pega en documentación y tickets de ancho fijo. Espera más expresiones partidas.
  • Menos de 60. Rara vez ayuda. Las líneas con mucha sangría dejan muy poco espacio, la salida se convierte en una columna de fragmentos y, con anchos muy pequeños, algunas líneas simplemente no se pueden cortar lo suficiente y quedan por encima del límite.
  • 0. Úsalo cuando la salida no deba contener ningún salto de línea que la disposición no haya creado, por ejemplo cuando comparas consultas formateadas en una herramienta que hace su propio ajuste visual de líneas, o cuando el SQL generado se almacena y lo compara una máquina en lugar de leerlo personas.

Recuerda que la sangría cuenta para el ancho. Con Espacios de sangría en 4, una línea dentro de una subconsulta de dos niveles de profundidad ya empieza en la columna 8, así que se parte antes que el mismo texto en el nivel superior. Bajar la sangría a 2 suele ser una mejor solución para consultas muy anidadas que subir el límite.

Consejos para la revisión de código

El ancho que elijas afecta a los diffs tanto como a la legibilidad. Las líneas partidas se mueven cuando un identificador cambia de longitud: renombrar una columna puede desplazar el punto de corte y tocar también la línea de continuación. Si tu equipo revisa SQL en pull requests, elige un ancho una sola vez, regístralo junto con tus demás convenciones de revisión de código y mantén los cálculos largos lo bastante cortos como para que no se partan. Las otras opciones, Comas y Palabras clave, no cambian la longitud de las líneas de una forma que importe aquí.