SQL Formatter Options

SQLinForm help pages - preview

SQLinForm Options Help

SQLinForm formats SQL through 220 options, grouped the same way in every edition – the VS Code extension, JetBrains, SSMS, Notepad++ and the online formatter. Each page below documents one group: what every option does, its default, and a before/after example. The option IDs are the keys stored inside a profile file, so they are the same wherever you use SQLinForm.

Global formatting

Settings that apply to every statement, whatever the SQL command.

Statements

Linebreaks and indentation clause by clause, per SQL command.

Lists and expressions

Constructs that appear inside a clause rather than around it.

DDL and procedural code

CREATE statements, and the code inside stored procedures and functions.

Beyond formatting

Working with SQL that lives inside application source code.

220 options across 24 pages. Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

General Options

The General Options apply to every statement SQLinForm formats, regardless of the SQL command. Start here: pick your database dialect, decide how deep one indentation level is, and tell the formatter which characters mark strings and statement boundaries in your code. Everything on the other option pages builds on these settings.

General Options

IDOptionWhat it doesDefault
ID033FreeYour Database
SRCE_DB
Sets the SQL dialect. The parser then recognises the keywords, data types, functions and proprietary syntax of that database – for example CONNECT BY in Oracle or QUALIFY in Snowflake. Choose ANSI SQL if your scripts must work across several systems.
Choices: ANSI SQL, Athena, Aurora, Azure, BigQuery, ClickHouse, Databricks SQL, DB2 zOS/UDB, DuckDB, Greenplum ... (28 in total)
ANSI SQL
ID002FreeGeneral Number of Spaces for Indention
GEN_NBR_SPACES_INDENT
Defines how many spaces make up one indentation level. Every Indent option on the other pages is a multiple of this value, so changing it here rescales the whole document.
Choices: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ... (21 in total)
4
ID071FreeUse the Backslash Character as Escape Character
SRCE_USE_ESCAPECHARACTER
Treats a backslash inside a string literal as an escape character, as MySQL does by default. Leave this off for databases where a backslash is an ordinary character, otherwise string literals containing Windows paths will be misread.off
ID018FreeDecimal Point is Comma
GEN_DECIMALPOINT_IS_COMMA
Tells the parser that a comma between two digits is a decimal separator, not a list separator. Without it, a literal such as 1,50 would be split across two lines.on
ID160FreeStatement Delimiter Character
DELIMITER1
The character that terminates a statement. SQLinForm uses it to tell one statement from the next when formatting a whole script.;
ID007FreeQuote Character
SRCE_QUOTECHAR
The character that encloses string literals. Everything between two of these characters is passed through unchanged – no casing, no linebreaks, no alignment.'

ID002 sets the width of one indentation level. Every "Indent" option elsewhere is a multiple of it.

ID002 = 2
select
  dept_nbr,
  dept_name
from
  dept
ID002 = 4
select
    dept_nbr,
    dept_name
from
    dept

Tip: ID033 should match the database you actually run against. It decides which keywords and functions the parser recognises – with the wrong dialect, proprietary syntax is treated as plain identifiers and stays unformatted.

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Upper/Lower Keywords

These options control letter casing. Most teams settle on one convention – keywords in upper case, table and column names in lower case – and let the formatter enforce it, so that casing never has to be discussed in a code review again. You can also maintain your own keyword list for words the parser does not recognise as SQL keywords.

Upper/Lower Keywords

Lower/Upper Case Options

ID157 acts on the whole statement and overrides the two options below it. Leave it at NONE if you want keywords and identifiers cased differently.

IDOptionWhat it doesDefault
ID157ProSelect CASE for complete SQL Statement
CASE_STATEMENT
Applies one casing rule to the entire statement. If set to UPPER or LOWER it overrides the two options below, so use it only when you want no distinction between keywords and identifiers.
Choices: NONE No Change · UPPER UPPER CASE FOR WHOLE STATEMENT · LOWER lower case for whole statement
NONE
ID003ProSelect CASE for Keywords
CASE_KEYWORDS
Casing for recognised SQL keywords. UPPER is the most common convention, because it separates the language from your identifiers at a glance.
Choices: NONE No Change · UPPER UPPER CASE KEYWORDS · LOWER lower case keywords
NONE
ID158ProSelect CASE for Non-Keywords
CASE_NONKEYWORDS
Casing for everything that is not a keyword: table names, column names, aliases. CAMEL converts order_date to OrderDate. Leave at NONE if your database is case-sensitive.
Choices: NONE No Change · UPPER UPPER CASE FOR NONKEYWORDS · LOWER lower case for nonkeywords · CAMEL CamelCase For NonKeywords
NONE
ID003 = NONE
Select Dept_Nbr, Dept_Name
From Dept
Where Dept_Zip = '64521'
ID003 = UPPER, ID158 = LOWER
SELECT dept_nbr, dept_name
FROM dept
WHERE dept_zip = '64521'
My Lower/Upper Case Keywords
IDOptionWhat it doesDefault
ID113ProMy Lower/Upper Case Keywords
CASE_KEYWORDLIST
Your own keyword list, one word per line. Words listed here follow the keyword casing rule even when the parser does not know them – useful for user-defined functions, package names or dialect keywords.MyKeyword1

ID113 contains one word per line, here nvl and decode. Listed words then follow the keyword casing rule ID003.

Not listed in ID113
select nvl(bonus, 0), decode(job, 'M', 'Mgr')
from   employee
Listed in ID113, ID003 = UPPER
select NVL(bonus, 0), DECODE(job, 'M', 'Mgr')
from   employee

Tip: Use this for user-defined functions, package names and dialect keywords the parser does not know. It only affects casing – not linebreaks.

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Alignment

Alignment is what turns a correctly indented statement into a readable one. SQLinForm can line up commas, aliases, equal signs, arithmetic operators and concatenation operators into vertical columns, so that the eye can scan a long column list or a wide WHERE clause without reading every character.

Alignment

Comma Alignment
IDOptionWhat it doesDefault
ID066ProAlign Commas
ALI_COMMA
Lines the commas of a column list into one vertical column. Only has a visible effect when several entries share a line, or when leading commas are used.on

Visible whenever several entries share a line, or when leading commas are used.

ID066 off
select emp_nbr, emp_name, dept,
       hire_date, salary, bonus
from   employee
ID066 on
select emp_nbr  , emp_name, dept ,
       hire_date, salary  , bonus
from   employee
Alias Alignment
IDOptionWhat it doesDefault
ID049ProAlign ALIAS
ALI_AS
Lines up all column aliases at the same position, so the result column names can be read as a list independently of the expressions that produce them. Mutually exclusive with ID073.on
ID049 off
select dept_nbr as nbr,
       employee_name as name,
       salary_amount as sal
from   employee
ID049 on
select dept_nbr      as nbr,
       employee_name as name,
       salary_amount as sal
from   employee
Equal Sign & Operators
IDOptionWhat it doesDefault
ID073ProAlign ALIAS at the Position specified in the next Option I...
ALI_ASPOSITION
Puts the alias at a fixed column instead of at a position calculated from the longest expression. Fixed positions keep two similar statements comparable side by side; dynamic positions produce more compact output. Mutually exclusive with ID049.off
ID074ProSpecify Position to align ALIAS
ALI_ASPOSITIONVALUE
The fixed column number used when the option above is switched on.60
ID031ProAlign Equal Signs ( '=', '==', '<', '>', etc
ALI_EQUAL
Aligns comparison operators in conditions and assignments, so that the left- and right-hand sides form two readable columns.on
ID032ProAlign Operators ( '+', '-', '*',
ALI_OPERATOR
Aligns arithmetic operators in calculations. Off by default, because it makes sense mainly in expression-heavy statements.off
ID060ProAlign '||' Concat Operator
ALI_CONCAT
Aligns the concatenation operator, which is useful in the long string-building expressions typical of reporting queries.on

ID031 lines up the comparison operators, which splits a condition list into a readable left and right column.

ID031 off
where dept_name = 'Sales'
  and employee_nbr >= 100
  and zip = '64521'
ID031 on
where dept_name    =  'Sales'
  and employee_nbr >= 100
  and zip          =  '64521'

Tip: ID073 with ID074 pins the alias to a fixed column instead of a calculated one. Fixed positions keep two similar statements comparable side by side; calculated positions produce more compact output.

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Output Format

These options govern the shape of the formatted result rather than any single SQL keyword: how long a line may become before it is wrapped, and which parts of your script the formatter must leave completely untouched.

Output Format

NO-FORMATTING Sections
IDOptionWhat it doesDefault
ID105ProNo Formatting between '-- FORMAT_OFF' (iD106) and '-- FORM...
NOFORMATBETWEEN
Enables the protected region below. Everything between the two markers is copied to the output byte for byte – the escape hatch for hand-tuned SQL that no formatter should touch.on
ID106ProSpecify the String to indicate the Start of the Non-Format...
NOFORMATSTART
The marker that opens the protected region. Write it in your SQL as a comment, for example -- FORMAT_OFF.FORMAT_OFF
ID107ProSpecify the String to indicate the End of the Non-Formatti...
NOFORMATEND
The marker that closes the protected region, for example -- FORMAT_ON.FORMAT_ON

Everything between the two markers is copied to the output byte for byte.

-- FORMAT_OFF
select  a ,   b   from  t  where  a=1
-- FORMAT_ON

select b,
       c
from   t2

Tip: The markers are written as comments in your SQL: prefix the string from ID106 / ID107 with --. This is the escape hatch for hand-tuned statements no formatter should touch.

Line Length
IDOptionWhat it doesDefault
ID022ProLine Length
LB_PAGEWIDTH
The column at which a line is wrapped. The default of 9999 effectively disables wrapping and lets the linebreak options alone decide. Set it to your team's review width – 80, 100 or 120 – to prevent horizontal scrolling.9999
ID022 = 9999 (no wrapping)
select employee_name, dept_name, salary_amount, hire_date
ID022 = 40
select employee_name, dept_name,
       salary_amount, hire_date

Tip: Set this to the review width your team uses – 80, 100 or 120 – so that no formatted statement ever needs horizontal scrolling in a diff.

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Comments

SQLinForm never changes the text of a comment, but it can decide where a comment sits: on its own line or trailing, aligned into a column, converted between line and block style, or removed entirely. Useful when you inherit a script whose comments have drifted out of place over the years.

Comments

Line Comments
IDOptionWhat it doesDefault
ID076ProAdd Linebreak Before Line Comments
LBB_LINECOMMENT
Puts a line comment on its own line instead of leaving it at the end of the preceding statement line.off
ID076 off
select dept_nbr, -- department key
       dept_name
from   dept
ID076 on
select dept_nbr,
       -- department key
       dept_name
from   dept
Block Comments
IDOptionWhat it doesDefault
ID077ProAdd Linebreak Before/After Block Comments
LBB_BLOCKCOMMENT
Isolates a block comment with a linebreak before and after, so it reads as a heading between two statements.on
ID050ProAlign Line Comments
ALI_COMMENT
Aligns trailing line comments into one column, which turns a series of commented columns into a readable two-column layout.on
ID115ProAlign Block Comments ( /* and */ )
ALI_LEFTPARACOMMENT
Aligns the opening and closing markers of block comments with each other.on
ID116ProLeft-Align Block Comment Lines
IND_PARACOMMENT
Aligns the individual lines within a multi-line block comment on the left, removing indentation inherited from wherever the comment was originally written.on
ID057ProConvert Line Comments into Block Comments
EDIT_REPL_COMMENT
Rewrites -- comments as /* */ comments. Handy when a target system or deployment tool strips line comments.off
ID154ProConvert Block Comments into Line Comments
EDIT_REPL_PARACOMMENT
The reverse: rewrites block comments as line comments. Note that a block comment spanning several lines becomes several line comments.off

ID050 pulls trailing line comments into one column.

ID050 off
select dept_nbr, -- key
       employee_name, -- full name
       salary -- gross amount
from   employee
ID050 on
select dept_nbr,      -- key
       employee_name, -- full name
       salary         -- gross amount
from   employee
Delete Comments
IDOptionWhat it doesDefault
ID035ProDelete Comments
EDIT_DEL_COMMENT
Removes all comments from the output. Irreversible – keep the original file.off
ID035 off
-- monthly headcount report
select dept_nbr,   -- key
       count(*)    /* headcount */
from   employee
ID035 on
select dept_nbr,
       count(*)
from   employee

Tip: Deleting comments cannot be undone by re-formatting – the text is gone from the output. Keep the original file.

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

White Spaces

Fine-grained control over the spaces around punctuation – commas, brackets and operators – plus how blank lines from the original script are treated and whether the whole statement is shifted to the right. These are the smallest adjustments SQLinForm offers, and often the ones that make a house style feel finished.

White Spaces

White Spaces Options
IDOptionWhat it doesDefault
ID040ProWhite Spaces Around Commas
WHSP_COMMA
Spacing around commas. NONE leaves whatever spacing the source already has – it does not mean 'no spaces'. NOAROUND removes the spaces, ONEBEFORE / ONEAFTER / ONEAROUND enforce one space before, after, or on both sides.
Choices: NONE No Change · NOAROUND No White Spaces Around Comma · ONEBEFORE One Space Before Comma · ONEAFTER One Space After Comma · ONEAROUND One Space Before and After Comma
NONE
ID036ProWhite Spaces Around Brackets
WHSP_BRACKET
Spacing around brackets. NONE leaves the source spacing untouched, NOAROUND removes it, ONEINSIDE puts one space just inside the brackets, ONEOUTSIDE just outside, ONEAROUND on both sides.
Choices: NONE No Change · NOAROUND No White Spaces Around Brackets · ONEINSIDE One Space Inside Brackets · ONEOUTSIDE One Space Outside Brackets · ONEAROUND One Space Inside and Outside Brackets
NONE
ID045ProWhite Spaces Around Operators
WHSP_EQUAL
Spacing around comparison and arithmetic operators. NONE keeps the source spacing unchanged, NOAROUND removes it, and ONEAROUND enforces one space on each side, turning a=1 into a = 1.
Choices: NONE No Change · NOAROUND No White Spaces Around Operators · ONEAROUND One Space Before and After Operators
NONE
ID072ProKeep Blank Lines
EDIT_DELETE_EMPTYLINES
How many blank lines from the source survive: NONE keeps none, ONE collapses each run to a single blank line, ALL keeps them all.
Choices: NONE Remove All Blank Lines · ONE Keep One Blank Line · ALL Keep All Blank Lines
NONE
ID084ProKeep Indention from 1st Line
IND_AUTO_1STLINE
Adds the indentation the first line already had to every line of the output. Useful for SQL embedded in indented application code. The amount is added on top of ID070.off

ID045 controls the spacing around comparison and arithmetic operators.

ID045 = NONE (leave as is)
where a=1
  and b<>2
  and c>=3
ID045 = ONEAROUND
where a = 1
  and b <> 2
  and c >= 3

Tip: ID084 keeps the indentation the first line already had and applies it to the whole statement – useful for SQL that sits inside indented application code.

Shift Complete SQL Statement by Spaces
IDOptionWhat it doesDefault
ID070ProShift SQL by this Amount of Spaces
IND_INITIALVALUE
Shifts the complete formatted statement to the right by this number of spaces, on top of any indentation the formatter itself produces. ID084, if on, adds to this value.0
ID070 = 0
select dept_nbr
from   dept
ID070 = 4
    select dept_nbr
    from   dept

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

SQL Linebreaks

Two settings that act on the statement as a whole: a length threshold below which a short statement is left on one line, and how the statement delimiter is placed. They are deliberately separate from the per-keyword linebreak options, because they override them.

SQL

Small SQL Linebreaks
IDOptionWhat it doesDefault
ID027ProNo Linebreak for SQL Statements smaller than this number o...
LB_WIDTH_SMALL_SQL
Statements shorter than this many characters are left on a single line. This overrides all linebreak options and keeps trivial statements such as select count(*) from dept from being spread over four lines.10

A statement below the threshold is left on one line, whatever the linebreak options say.

ID027 = 0
select
    count(*)
from
    dept
ID027 = 40
select count(*) from dept
Linebreak Delimiter
IDOptionWhat it doesDefault
ID152FreeLinebreak Before Statement Delimiter
LBB_SEMIKOLON
Puts the statement delimiter on its own line rather than directly after the last token.off
ID155ProDouble Linebreak After Delimiter
LBA_SEMIKOLON_DOUBLE
Inserts a blank line after each delimiter, which separates the statements of a long script visually.off
ID152 off, ID155 off
select dept_nbr from dept;
select emp_nbr from employee;
ID152 on, ID155 on
select dept_nbr from dept
;

select emp_nbr from employee
;

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Keyword Indention & Alignment

How the master keywords – SELECT, FROM, WHERE, GROUP BY, ORDER BY, INSERT, UPDATE, DELETE – relate to the column lists beneath them. This is the single biggest lever on the overall silhouette of a formatted statement: left-aligned block style, or right-justified so that every keyword ends at the same column.

Keyword Indention

The width is measured per statement, so it adapts to the keywords that statement actually contains. A query without a multi-word join yields the same result under SMALL and BIG.

IDOptionWhat it doesDefault
ID005ProSelect the indention for SELECT, UPDATE, DELETE, INSERT Ma...
GEN_SQL_AUTO_IND
Derives the indentation width from the keywords themselves instead of from the fixed ID002 value, so that every clause body starts in one common column. SMALL measures the longest single keyword token, BIG the longest complete keyword expression: in a query containing LEFT OUTER JOIN, SMALL counts only LEFT (4 characters) while BIG counts the whole LEFT OUTER JOIN (15). One space is added to the measured width. NONE ignores the keywords and uses the ID002 spaces per level.
Choices: NONE Use General Number of Spaces for Indention · SMALL Use Small Keyword Size · BIG Use Large Keyword Size
NONE

The same query under both settings, with ID146 "Linebreak After JOIN" switched off so the measured widths stay visible on one line. SMALL measures the longest single token (select, 6) and indents to column 8; BIG measures the longest expression (left outer join, 15) and indents to column 17. Where a keyword expression is longer than the measured width, as left outer join is under SMALL, its operand simply follows one space later.

ID005 = SMALL
select dept_nbr,
       dept_name
from   dept
left outer join employee
on     dept.dept_nbr = employee.dept_nbr
where  dept_zip = '64521'
ID005 = BIG
select          dept_nbr,
                dept_name
from            dept
left outer join employee
on              dept.dept_nbr = employee.dept_nbr
where           dept_zip = '64521'

Tip: Because BIG scales with the longest keyword expression, a single LEFT OUTER JOIN pushes the whole statement 9 columns further right than SMALL would. On narrow review widths that is worth checking against ID022.

Keyword Alignment

Align Master Keywords
IDOptionWhat it doesDefault
ID034ProRight-Justify Keywords
ALI_RIGHTKEYWORD
Right-justifies the master keywords so that they all end at the same column and the column lists begin at a common left edge – the classic river layout.off

Right-justifying the master keywords gives the statement a single left edge for all clause bodies &ndash; the classic "river" layout.

ID034 off
select dept_nbr,
       dept_name
from   dept
where  dept_zip = '64521'
group by dept_nbr
ID034 on
  select dept_nbr,
         dept_name
    from dept
   where dept_zip = '64521'
group by dept_nbr

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

SELECT

Linebreak options for every clause of a SELECT statement, clause by clause: SELECT, FROM, INTO, WHERE, HAVING, GROUP BY, ORDER BY, WINDOW, OFFSET and the set operators UNION, EXCEPT and INTERSECT. Each clause has a Linebreak Before and a Linebreak After switch, which together decide whether the keyword gets its own line.

SELECT

IDOptionWhat it doesDefault
ID148FreeLinebreak After SELECT
LBA_SELECT
Starts the column list on the line after the SELECT keyword instead of on the same line.on
ID148 off
select dept_nbr,
       dept_name
from   dept
ID148 on
select
    dept_nbr,
    dept_name
from   dept

FROM

IDOptionWhat it doesDefault
ID182FreeLinebreak Before FROM
LBB_FROM
Puts FROM on a new line, separating the column list from the table list.on
ID143FreeLinebreak After FROM
LBA_FROM
Starts the table list on the line after FROM. Switch on when queries regularly read from several tables.on
ID182 off, ID143 off
select dept_nbr from dept, employee
ID182 on, ID143 on
select dept_nbr
from
    dept,
    employee

INTO

IDOptionWhat it doesDefault
ID185FreeLinebreak Before INTO
LBB_INTO
Puts INTO on a new line. Applies to SELECT … INTO in procedural code and to INSERT INTO.on
ID159FreeLinebreak After INTO
LBA_INTO
Starts the target list on the line after INTO.on
ID185 off, ID159 off
insert into employee (emp_nbr, emp_name)
values (1, 'Smith')
ID185 on, ID159 on
insert
into
    employee (emp_nbr, emp_name)
values (1, 'Smith')

WHERE

The WHERE clause has two independent levels: the position of the WHERE keyword itself, and the treatment of the AND / OR operators that join the individual conditions.

WHERE
IDOptionWhat it doesDefault
ID183FreeLinebreak Before WHERE
LBB_WHERE
Puts WHERE on a new line, which marks the beginning of the filter section.on
ID142FreeLinebreak After WHERE
LBA_WHERE
Starts the first condition on the line after WHERE. Combined with the option before, WHERE then occupies a line of its own.on
ID183 off, ID142 off
select dept_nbr
from   dept where dept_zip = '64521'
ID183 on, ID142 on
select dept_nbr
from   dept
where
    dept_zip = '64521'
WHERE Condition
IDOptionWhat it doesDefault
ID172FreeLinebreak Before AND/OR in WHERE Condition
LBB_WHERE_AND
Starts each new condition on its own line with the AND or OR leading it. Leading operators make the boolean structure of a long filter easy to scan.on
ID173FreeLinebreak After AND/OR in WHERE Condition
LBA_WHERE_AND
Puts the condition on the line after the operator, so that the operator alone terminates the previous line.off
ID174FreeIndent AND/OR in WHERE Condition
IND_WHERE_AND
Indents the AND / OR operators one level deeper than the WHERE keyword, which subordinates the conditions to the clause visually.off

Leading AND / OR operators make the boolean structure of a long filter readable top to bottom.

ID172 off
where dept_zip = '64521' and dept_nbr > 100 and active = 1
ID172 on, ID174 on
where dept_zip = '64521'
      and dept_nbr > 100
      and active = 1

HAVING

HAVING mirrors WHERE exactly, but filters after aggregation. The options are deliberately separate so you can format the two clauses differently.

HAVING
IDOptionWhat it doesDefault
ID184FreeLinebreak Before HAVING
LBB_HAVING
Puts HAVING on a new line.on
ID153FreeLinebreak After HAVING
LBA_HAVING
Starts the first condition on the line after HAVING.on
ID184 off, ID153 off
select dept_nbr, sum(salary)
from   employee
group by dept_nbr having sum(salary) > 100000
ID184 on, ID153 on
select dept_nbr, sum(salary)
from   employee
group by dept_nbr
having
    sum(salary) > 100000
HAVING Condition
IDOptionWhat it doesDefault
ID175FreeLinebreak Before AND/OR in HAVING Condition
LBB_HAVING_AND
Starts each condition of the HAVING clause on its own line, led by AND or OR.on
ID176FreeLinebreak After AND/OR in HAVING Condition
LBA_HAVING_AND
Puts the condition on the line after the operator.off
ID177FreeIndent AND/OR in HAVING Condition
IND_HAVING_AND
Indents the AND / OR operators of the HAVING clause one level deeper.off
ID175 off
having sum(salary) > 100000 and count(*) > 5
ID175 on, ID177 on
having sum(salary) > 100000
       and count(*) > 5

GROUP BY

IDOptionWhat it doesDefault
ID186FreeLinebreak Before GROUP BY
LBB_GROUPBY
Puts GROUP BY on a new line.on
ID145FreeLinebreak After GROUP BY
LBA_GROUPBY
Starts the grouping list on the line after GROUP BY.on
ID135FreeStack GROUP BY
LB_STACKLISTGROUPBY
Stacks the grouping columns one per line instead of running them together. Makes it obvious whether the GROUP BY matches the non-aggregated columns of the SELECT list.on

ID135 stacks the grouping columns, which makes it obvious whether they match the non-aggregated columns of the SELECT list.

ID186 off, ID135 off
select dept_nbr, job, sum(salary)
from   employee group by dept_nbr, job
ID186 on, ID145 on, ID135 on
select dept_nbr, job, sum(salary)
from   employee
group by
    dept_nbr,
    job

ORDER BY

IDOptionWhat it doesDefault
ID187FreeLinebreak Before ORDER BY
LBB_ORDERBY
Puts ORDER BY on a new line.on
ID144FreeLinebreak After ORDER BY
LBA_ORDERBY
Starts the sort list on the line after ORDER BY.on
ID136FreeStack ORDER BY
LB_STACKLISTORDERBY
Stacks the sort columns one per line, so that each column with its ASC or DESC is visible on its own.on
ID187 off, ID136 off
select dept_nbr from dept order by dept_name desc, dept_nbr
ID187 on, ID144 on, ID136 on
select dept_nbr
from   dept
order by
    dept_name desc,
    dept_nbr

WINDOW

IDOptionWhat it doesDefault
ID258FreeLinebreak Before WINDOW
LBB_WINDOW
Puts the WINDOW clause on a new line. WINDOW names a window definition once so several analytic functions can reuse it.on
ID258 off
select rank() over w from employee window w as (order by salary desc)
ID258 on
select rank() over w
from   employee
window w as (order by salary desc)

OFFSET

IDOptionWhat it doesDefault
ID257FreeLinebreak Before OFFSET
LBB_OFFSET
Puts OFFSET on a new line, together with the FETCH or LIMIT clause that usually follows it.on
ID257 off
select emp_name from employee order by emp_name offset 10 rows fetch next 20 rows only
ID257 on
select emp_name
from   employee
order by emp_name
offset 10 rows fetch next 20 rows only

UNION, EXCEPT, INTERSECT

IDOptionWhat it doesDefault
ID256FreeLinebreak Before UNION, EXCEPT, INTERSECT
LBB_UNION
Puts the set operator on a new line, so it separates the two queries it combines. Mutually exclusive with ID011.on
ID011FreeDouble Linebreak before/after UNION, EXCEPT, INTERSECT
LB_DOUBLEUNION
Surrounds the set operator with blank lines. In a chain of several UNIONs this is what makes the individual queries recognisable as blocks. Mutually exclusive with ID256.on

ID011 surrounds the operator with blank lines, which turns a chain of set operations into readable blocks.

ID256 off, ID011 off
select dept_nbr from dept union select dept_nbr from dept_archive
ID256 on, ID011 on
select dept_nbr
from   dept

union

select dept_nbr
from   dept_archive

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Sub-Select & CTE

A subquery or a common table expression is a complete SELECT nested inside another statement. These options decide how that nested statement is set off from its surroundings: how its brackets are placed and whether its body is indented one level deeper or aligned to the opening bracket.

Sub-Select & CTE

Align & Indent Sub-SELECT Statement
IDOptionWhat it doesDefault
ID255ProAlign Subquery to Opening Bracket
ALI_SELECT2BRACKET
Aligns the body of the subquery to the position of the opening bracket rather than indenting it by a fixed amount. Keeps deeply nested queries from drifting far to the right.off
ID028ProIndent Sub-SELECT Statement
IND_AFT_SELECTBR
Indents the subquery one level deeper than its surroundings, marking it as a nested statement.on
ID028 off
select dept_nbr
from   dept
where  dept_nbr in (
select dept_nbr
from   employee
)
ID028 on
select dept_nbr
from   dept
where  dept_nbr in (
           select dept_nbr
           from   employee
       )

Tip: ID255 aligns the subquery body to the opening bracket instead of indenting it by a fixed amount. In deeply nested queries this keeps the code from drifting far to the right.

Sub-SELECT Brackets
IDOptionWhat it doesDefault
ID087ProLinebreak Before Open '('
LBB_SELECTBRACKET
Puts the opening bracket of the subquery on a new line.on
ID016ProLinebreak After Open '('
LBA_SELECTBRACKET
Starts the subquery on the line after the opening bracket, so the bracket does not share a line with the SELECT.on
ID089ProLinebreak Before Close ')'
LBB_CLOSESELECTBRACKET
Puts the closing bracket on a new line, where it visually terminates the nested block.off
ID090ProLinebreak After Close ')'
LBA_CLOSESELECTBRACKET
Starts whatever follows the subquery – usually an alias – on the line after the closing bracket.off
All four off
where dept_nbr in (select dept_nbr from employee)
ID087 on, ID016 on, ID089 on
where dept_nbr in
(
    select dept_nbr
    from   employee
)

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

JOIN

Formatting for JOIN clauses and their ON conditions. Because a query with five joins is mostly join syntax, these options have a disproportionate effect on how quickly a reader can see which tables are combined and on which columns.

JOIN

JOIN Statement
IDOptionWhat it doesDefault
ID063ProLinebreak Before JOIN
LBB_JOIN
Puts the JOIN keyword on a new line, so that each joined table starts its own block.on
ID146ProLinebreak After JOIN
LBA_JOIN
Starts the table name on the line after the JOIN keyword. With LEFT OUTER JOIN this separates the join type from the table.on
ID068ProIndent JOIN Statement
IND_JOIN
Indents the whole JOIN clause one level deeper than FROM, subordinating the joined tables to the driving table.off
ID063 off, ID146 off
from dept inner join employee on dept.dept_nbr = employee.dept_nbr
ID063 on, ID146 on
from dept
inner join
    employee
on dept.dept_nbr = employee.dept_nbr
ON Condition
IDOptionWhat it doesDefault
ID062ProLinebreak Before ON
LBB_JOIN_ON
Puts ON on a new line, separating the join condition from the table name.on
ID147ProLinebreak After ON
LBA_JOIN_ON
Starts the join condition on the line after ON.on
ID131ProIndent ON Condition
IND_JOINON
Indents the ON condition one level deeper than the JOIN keyword.off
ID062 off, ID147 off
inner join employee on dept.dept_nbr = employee.dept_nbr
ID062 on, ID147 on
inner join employee
on
    dept.dept_nbr = employee.dept_nbr
JOIN Condition
IDOptionWhat it doesDefault
ID178ProLinebreak Before AND/OR in JOIN Condition
LBB_JOINON_AND
Starts each additional join condition on its own line, led by AND or OR. Essential for composite keys.on
ID179ProLinebreak After AND/OR in JOIN Condition
LBA_JOINON_AND
Puts the condition on the line after the operator.off
ID180ProIndent AND/OR in JOIN Condition
IND_JOINON_AND
Indents the AND / OR operators of a multi-part join condition one level deeper.off
ID156ProAlign AND/OR to ON
ALI_JOINON_AND_TO_ON
Aligns the AND / OR operators of the join condition with the ON keyword, so that ON and its continuations form one column. Only takes effect when both ID062 and ID147 are off – if ON already gets a linebreak before or after it, there is no column to align to.off

ID156 aligns the continuation operators with the ON keyword, so a composite key reads as one block. It requires ID062 and ID147 to be off, as shown here.

ID178 off
on dept.dept_nbr = emp.dept_nbr and dept.region = emp.region
ID178 on, ID156 on
on  dept.dept_nbr = emp.dept_nbr
and dept.region   = emp.region

Tip: If ON has a linebreak before or after it (ID062 / ID147, both on by default), ID156 is ignored – the formatter has no ON on the same line to align against.

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

INSERT, UPDATE, DELETE

Formatting for the three DML statements. The INSERT options mostly concern the two bracketed lists – columns and values – which are easiest to compare when they are stacked with one entry per line. The UPDATE and DELETE options control the SET clause and the comma placement inside it.

INSERT

An INSERT holds two parallel bracketed lists. They are easiest to verify when both use the same layout, so that the n-th column and the n-th value sit on the same line number.

INSERT Brackets
IDOptionWhat it doesDefault
ID108ProLinebreak Before '('
LBB_OPENINSERTBRACKET
Puts the opening bracket of the column list on a new line.on
ID109ProLinebreak After '('
LBA_OPENINSERTBRACKET
Starts the first column on the line after the opening bracket.on
ID110ProLinebreak Before ')'
LBB_CLOSEINSERTBRACKET
Puts the closing bracket on a new line, where it terminates the list.on
ID111ProLinebreak After ')'
LBA_CLOSEINSERTBRACKET
Starts whatever follows – usually VALUES or a SELECT – on the line after the closing bracket.on
All four off
insert into employee (emp_nbr, emp_name, dept_nbr) values (1, 'Smith', 10)
All four on
insert into employee
(
    emp_nbr,
    emp_name,
    dept_nbr
)
values
(
    1,
    'Smith',
    10
)
Columns and Values
IDOptionWhat it doesDefault
ID112ProIndent Columns and Values
IND_INSERTBRACKET
Indents the column and value lists one level deeper than the INSERT keyword.on
ID149ProNumber of Columns or Values per Line
LB_NBR_COMMASINSERTPERLINE
How many columns or values share one line. 1 makes the n-th column and the n-th value line up on the same line number, which is the fastest way to check a wide INSERT.
Choices: 1, 2, 3, 4
1

With one entry per line the n-th column and the n-th value share a line number, which is the fastest way to verify a wide INSERT.

ID149 = 4
(
    emp_nbr, emp_name, dept_nbr, hire_date
)
values
(
    1, 'Smith', 10, '2026-01-15'
)
ID149 = 1
(
    emp_nbr,
    emp_name,
    dept_nbr,
    hire_date
)
values
(
    1,
    'Smith',
    10,
    '2026-01-15'
)
Commas
IDOptionWhat it doesDefault
ID207ProLinebreak Before Comma
LBB_COMMAINSERT
Puts the comma at the start of the next line rather than at the end of the current one.off
ID208ProLinebreak After Comma
LBA_COMMAINSERT
Starts the next entry on the line after the comma – the conventional trailing-comma style.on
ID208 on (trailing comma)
(
    emp_nbr,
    emp_name,
    dept_nbr
)
ID207 on (leading comma)
(
    emp_nbr
  , emp_name
  , dept_nbr
)

UPDATE, DELETE

UPDATE
IDOptionWhat it doesDefault
ID150FreeLinebreak After UPDATE
LBA_UPDATE
Starts the table name on the line after UPDATE.on
ID209ProLinebreak Before Comma
LBB_COMMAUPDATE
Leading commas in the SET clause: the comma opens the line of the assignment that follows it.off
ID210ProLinebreak After Comma
LBA_COMMAUPDATE
Trailing commas in the SET clause: each assignment ends with its comma and the next starts on a new line.on
ID211ProLinebreak Before SET
LBB_SET_UPDATE
Puts SET on a new line, separating it from the table name.on
ID212ProLinebreak After SET
LBA_SET_UPDATE
Starts the first assignment on the line after SET, so that all assignments form one block.on
ID150 off, ID211 off, ID212 off
update employee set salary = salary * 1.05, bonus = 500 where dept_nbr = 10
ID150 on, ID211 on, ID212 on
update
    employee
set
    salary = salary * 1.05,
    bonus  = 500
where dept_nbr = 10
DELETE
IDOptionWhat it doesDefault
ID151FreeLinebreak After DELETE
LBA_DELETE
Starts the FROM clause on the line after DELETE.on
ID151 off
delete from employee where dept_nbr = 10
ID151 on
delete
from   employee
where  dept_nbr = 10

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

MERGE

A MERGE statement combines a target, a source, a join condition and several conditional branches in one command, which makes it one of the longest statements in everyday SQL. These options break it into its constituent clauses – MERGE, USING, ON, WHEN and THEN – so the structure stays visible.

MERGE

MERGE
IDOptionWhat it doesDefault
ID213ProLinebreak After MERGE
LBA_MERGE
Starts the target table on the line after the MERGE keyword.on

A complete MERGE with all options on this page at their defaults. The groups below cover each clause in turn.

merge
into   employee tgt
using  employee_staging src
on     (tgt.emp_nbr = src.emp_nbr)
when matched then
    update set tgt.salary = src.salary
when not matched then
    insert (emp_nbr, emp_name)
    values (src.emp_nbr, src.emp_name)
USING
IDOptionWhat it doesDefault
ID214ProLinebreak Before USING
LBB_MERGE_USING
Puts USING on a new line, which separates the source from the target.on
ID215ProLinebreak After USING
LBA_MERGE_USING
Starts the source – a table or a complete subquery – on the line after USING.on
ID214 off, ID215 off
into employee tgt using employee_staging src
ID214 on, ID215 on
into employee tgt
using
    employee_staging src
ON
IDOptionWhat it doesDefault
ID216ProLinebreak Before ON
LBB_MERGE_ON
Puts ON on a new line, separating the match condition from the source.on
ID217ProLinebreak After ON
LBA_MERGE_ON
Starts the match condition on the line after ON.off
ID216 off
using employee_staging src on (tgt.emp_nbr = src.emp_nbr)
ID216 on
using employee_staging src
on (tgt.emp_nbr = src.emp_nbr)
ON Condition
IDOptionWhat it doesDefault
ID218ProLinebreak Before AND/OR in ON Condition
LBB_MERGEON_AND
Starts each additional part of the match condition on its own line, led by AND or OR.off
ID219ProLinebreak After AND/OR in ON Condition
LBA_MERGEON_AND
Puts the condition on the line after the operator.off
ID220ProIndent AND/OR in ON Condition
IND_MERGEON_AND
Indents the AND / OR operators of the ON condition one level deeper.off
ID218 off
on (tgt.emp_nbr = src.emp_nbr and tgt.region = src.region)
ID218 on, ID220 on
on (tgt.emp_nbr = src.emp_nbr
        and tgt.region = src.region)
WHEN Condition
IDOptionWhat it doesDefault
ID221ProLinebreak Before AND/OR in WHEN Condition
LBB_MERGEWHEN_AND
Starts each additional part of a WHEN MATCHED AND … condition on its own line.off
ID222ProLinebreak After AND/OR in WHEN Condition
LBA_MERGEWHEN_AND
Puts the condition on the line after the operator.off
ID223ProIndent AND/OR in WHEN Condition
IND_MERGEWHEN_AND
Indents the AND / OR operators of the WHEN condition one level deeper.off
ID221 off
when matched and src.salary > 0 and src.active = 1 then
ID221 on
when matched
     and src.salary > 0
     and src.active = 1 then
THEN
IDOptionWhat it doesDefault
ID224ProLinebreak Before THEN
LBB_MERGEWHEN_THEN
Puts THEN on a new line, separating the condition of a branch from the action it triggers.off
ID224 off
when matched then
    update set tgt.salary = src.salary
ID224 on
when matched
then
    update set tgt.salary = src.salary

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Comma Separated Lists

The comma-separated list is the most common construct in SQL: the SELECT column list, GROUP BY, ORDER BY, INSERT columns and values. These options decide how many entries share a line, whether the comma sits at the end of a line or leads the next one, and how a leading comma is aligned. Leading commas are a widespread convention because adding or removing the last column then touches only one line.

Comma Separated Lists in SQL Statemets

IDOptionWhat it doesDefault
ID065FreeNumber of Columns per Line
LB_NBR_COMMASPERLINE
How many list entries share one line. 1 gives one column per line – the standard for anything but the shortest lists, because a diff then shows exactly which column changed. 999 keeps the list on as few lines as possible.
Choices: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 999
1

One entry per line is the usual choice for anything but the shortest lists: a diff then shows exactly which column changed.

ID065 = 3
select emp_nbr, emp_name, dept_nbr,
       hire_date, salary, bonus
from   employee
ID065 = 1
select emp_nbr,
       emp_name,
       dept_nbr,
       hire_date,
       salary,
       bonus
from   employee
Linebreak After Comma
IDOptionWhat it doesDefault
ID013FreeLinebreak After Comma
LBA_COMMA
Trailing commas: each entry ends with its comma, the next entry starts on a new line.on
ID013 off
select emp_nbr, emp_name, dept_nbr
from   employee
ID013 on
select emp_nbr,
       emp_name,
       dept_nbr
from   employee
Linebreak Before Comma
IDOptionWhat it doesDefault
ID012FreeLinebreak Before Comma
LBB_COMMA
Leading commas: the comma opens the line of the entry that follows it. Adding or removing the last column then touches a single line, which keeps diffs minimal.on
ID122FreeMove Comma 2 Positions to the left with 1 Space (When ID01...
ALI_MOVE_COMMALEFT
Shifts a leading comma two positions left and puts one space after it, so the entries themselves stay aligned with the block above. Mutually exclusive with ID242, ID181.off
ID242FreeMove Comma 1 Positions to the left with no space (When ID0...
ALI_MOVE_COMMALEFTONE
Shifts a leading comma one position left with no space after it – the tighter variant of the option above. Mutually exclusive with ID122, ID181.off
ID181FreeMove Comma to the left border of the SELECT statement (Whe...
ALI_MOVE_COMMALEFTBORDER
Moves the leading comma out to the left margin of the SELECT statement, giving the list a distinct outer edge. Mutually exclusive with ID122, ID242.off

Leading commas: adding or removing the last column touches a single line, which keeps diffs minimal.

ID013 on (trailing comma)
select emp_nbr,
       emp_name,
       dept_nbr
from   employee
ID012 on (leading comma)
select emp_nbr
     , emp_name
     , dept_nbr
from   employee

Tip: ID122, ID242 and ID181 are three mutually exclusive ways to position that leading comma: two positions left with a space, one position left with no space, or out at the left margin of the statement. Pick one.

Concat Operator ('||')
IDOptionWhat it doesDefault
ID058FreeLinebreak Before Concat ('||')
LBB_CONCAT
Puts the concatenation operator at the start of the next line, so each fragment of a long concatenation begins with the operator.off
ID059FreeLinebreak After Concat ('||')
LBA_CONCAT
Starts the next fragment on the line after the operator.off
ID058 off, ID059 off
select first_name || ' ' || last_name as full_name
from   employee
ID058 on
select first_name
       || ' '
       || last_name as full_name
from   employee

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

My Lists for SQL Functions

Some function calls hold long argument lists that deserve their own layout – a DECODE with twenty branches, an IN list of literals, a COALESCE across many columns. Here you can name up to three groups of function keywords and give each group its own formatting, independent of the general list options.

My List for SQL Functions 1

IDOptionWhat it doesDefault
ID194FreeMy SQL Function Keywords GROUP 1
MY_FUNCTIONKEYWORDLIST
The function keywords of group 1, one per line. Argument lists inside these functions are formatted with the settings below instead of the general list options.in
ID196FreeNumber of Values in 1st Line
LB_NBR_COMMASINFUNCTIONLIST_L1
How many arguments appear on the first line. Setting this higher than the following lines lets you keep the function name and its first arguments together.
Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999
1
ID197FreeNumber of Values in subsequent Lines
LB_NBR_COMMASINFUNCTIONLIST
How many arguments appear on each subsequent line.
Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999
1
ID225FreeLinebreak Before (
LBB_FUNCTIONLIST1_OPENBRACKET
Puts the opening bracket of the function call on a new line.off
ID228FreeLinebreak After (
LBA_FUNCTIONLIST1_OPENBRACKET
Starts the first argument on the line after the opening bracket.off
ID198FreeAlign Commas
ALI_COMMA_FUNCTIONLIST
Aligns the commas of the argument list into a column.off
ID231FreeIndent Values inside Bracket
IND_FUNCTIONLIST1
Indents the arguments one level deeper than the function name.off

ID194 contains decode; ID197 = 2 puts two arguments on each subsequent line, so the branches of the decode pair up.

decode not listed in ID194
select decode(status, 1, 'new', 2, 'open', 3, 'done', 'other')
from   ticket
decode listed, ID197 = 2
select decode(status,
              1, 'new',
              2, 'open',
              3, 'done',
              'other')
from   ticket

My List for SQL Functions 2

IDOptionWhat it doesDefault
ID199FreeMy SQL Function Keywords GROUP 2
MY_FUNCTIONKEYWORDLIST2
The function keywords of group 2, one per line. Use a second group when different functions need different argument layouts.(empty)
ID200FreeNumber of Values in 1st Line
LB_NBR_COMMASINFUNCTIONLIST2_L1
How many arguments appear on the first line.
Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999
1
ID201FreeNumber of Values in subsequent Lines
LB_NBR_COMMASINFUNCTIONLIST2
How many arguments appear on each subsequent line.
Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999
1
ID226FreeLinebreak Before (
LBB_FUNCTIONLIST2_OPENBRACKET
Puts the opening bracket on a new line.off
ID229FreeLinebreak After (
LBA_FUNCTIONLIST2_OPENBRACKET
Starts the first argument on the line after the opening bracket.off
ID202FreeAlign Commas
ALI_COMMA_FUNCTIONLIST2
Aligns the commas of the argument list.off
ID232FreeIndent Values inside Bracket
IND_FUNCTIONLIST2
Indents the arguments one level deeper than the function name.off

A second, independent group &ndash; here in with ID201 = 2 and ID232 on.

in not listed in ID199
where dept_nbr in (10, 20, 30, 40, 50, 60)
in listed, ID201 = 2, ID232 on
where dept_nbr in (
          10, 20,
          30, 40,
          50, 60
      )

My List for SQL Functions 3

IDOptionWhat it doesDefault
ID203FreeMy SQL Function Keywords GROUP 3
MY_FUNCTIONKEYWORDLIST3
The function keywords of group 3, one per line.(empty)
ID204FreeNumber of Values in 1st Line
LB_NBR_COMMASINFUNCTIONLIST3_L1
How many arguments appear on the first line.
Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999
1
ID205FreeNumber of Values in subsequent Lines
LB_NBR_COMMASINFUNCTIONLIST3
How many arguments appear on each subsequent line.
Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999
1
ID227FreeLinebreak Before (
LBB_FUNCTIONLIST3_OPENBRACKET
Puts the opening bracket on a new line.off
ID230FreeLinebreak After (
LBA_FUNCTIONLIST3_OPENBRACKET
Starts the first argument on the line after the opening bracket.off
ID206FreeAlign Commas
ALI_COMMA_FUNCTIONLIST3
Aligns the commas of the argument list.off
ID233FreeIndent Values inside Bracket
IND_FUNCTIONLIST3
Indents the arguments one level deeper than the function name.off

A third group &ndash; here coalesce with one argument per line and the commas aligned.

coalesce not listed in ID203
select coalesce(bonus, commission, allowance, 0)
from   employee
coalesce listed, ID205 = 1
select coalesce(bonus,
                commission,
                allowance,
                0)
from   employee

Tip: The three groups are independent and are matched by function name. A function that appears in none of them falls back to the general list options on the Comma Separated Lists page.

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Conditions in Brackets

When a WHERE or HAVING clause groups conditions with brackets, the brackets carry the logic: they decide what binds to what. These options make that grouping visible at a glance by placing linebreaks around the brackets and indenting their contents.

Conditions in Brackets

IDOptionWhat it doesDefault
ID088ProLinebreak Before '('
LBB_CONDITIONBRACKET
Puts the opening bracket of a condition group on a new line.off
ID017ProLinebreak After '('
LBA_CONDITIONBRACKET
Starts the first condition on the line after the opening bracket, so the bracket alone marks the beginning of the group.on
ID091ProLinebreak Before ')'
LBB_CLOSECONDITIONBRACKET
Puts the closing bracket on a new line, where it terminates the group.off
ID092ProLinebreak After ')'
LBA_CLOSECONDITIONBRACKET
Starts whatever follows the group on the line after the closing bracket.off
ID069ProIndent Conditions in Brackets
IND_AFT_CONDITIONBR
Indents the conditions inside the brackets one level deeper, so that nesting depth becomes visible as indentation depth.on

Brackets carry the logic of a filter &ndash; they decide what binds to what. Indenting their contents makes that grouping visible.

ID017 off, ID069 off
where (dept_nbr = 10 or dept_nbr = 20) and active = 1
ID017 on, ID069 on
where (
          dept_nbr = 10
          or dept_nbr = 20
      )
      and active = 1

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Analytic Expressions - OVER

Window functions such as ROW_NUMBER() OVER (PARTITION BY … ORDER BY …) pack a whole sub-language into one bracketed expression, frequently inside an already long column list. These options give the OVER clause its own layout so that the partitioning and ordering can be read separately from the function call.

Analytic Expressions - OVER

Brackets
IDOptionWhat it doesDefault
ID234ProLinebreak Before '('
LBB_OPENANALYTICBRACKET
Puts the opening bracket of the OVER clause on a new line, separating the window definition from the function call.on
ID235ProLinebreak After '('
LBA_OPENANALYTICBRACKET
Starts the window definition on the line after the opening bracket.on
ID236ProLinebreak Before ')'
LBB_CLOSEANALYTICBRACKET
Puts the closing bracket on a new line.on
ID237ProLinebreak After ')'
LBA_CLOSEANALYTICBRACKET
Starts whatever follows – usually the alias – on the line after the closing bracket.on
All four off
select rank() over (partition by dept_nbr order by salary desc) as rnk
from   employee
ID234 on, ID235 on, ID236 on
select rank() over
       (
           partition by dept_nbr
           order by salary desc
       ) as rnk
from   employee
PARTITION BY / ORDER BY
IDOptionWhat it doesDefault
ID240ProLinebreak Before PARTITION BY, ORDER BY,
LBB_ANALYTICPARTITIONBY
Puts each of PARTITION BY, ORDER BY and the frame clause on its own line, which is what makes a complex window definition readable.on
ID241ProStack Attributes
LB_STACKANALYTIC
Stacks the columns of a PARTITION BY or ORDER BY one per line.on
ID240 off, ID241 off
over (partition by dept_nbr, job order by salary desc, hire_date)
ID240 on, ID241 on
over (partition by dept_nbr,
                   job
      order by salary desc,
               hire_date)
Stack & Indenting
IDOptionWhat it doesDefault
ID238ProIndent Statement Inside Bracket
IND_ANALYTICBRACKETINSIDE
Indents the contents of the OVER bracket one level deeper.on
ID239ProIndent Brackt
IND_ANALYTICBRACKETOUTSIDE
Indents the bracket itself relative to the function call.on
ID238 off
over
(
partition by dept_nbr
order by salary desc
)
ID238 on
over
(
    partition by dept_nbr
    order by salary desc
)

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

CASE

A CASE expression is a decision table written inline, and it benefits more than any other construct from consistent formatting: with each WHEN on its own line, the branches can be compared vertically. These options cover the CASE, WHEN, THEN, ELSE and END keywords, the conditions inside a WHEN, and a threshold that keeps very short CASE expressions on one line.

CASE Keywords

These options place the five keywords that make up a CASE expression. Read them as pairs: Linebreak Before decides whether the keyword starts a new line, Linebreak After whether its operand starts a new line.

CASE / END
IDOptionWhat it doesDefault
ID026ProLinebreak Before CASE Keyword
LBB_CASE
Puts CASE on a new line. In a SELECT list this separates the CASE expression from the column before it.on
ID042ProLinebreak After CASE Keyword
LBA_CASE
Starts the first WHEN on the line after the CASE keyword.on
ID044ProLinebreak Before END Keyword
LBB_CASE_END
Puts END on a new line, where it closes the expression at the same indentation as CASE.on
ID121ProIndent CASE Statement inside brackets
IND_CASEBRACKET
Indents a CASE expression that sits inside brackets, for example within a function call.off
ID026 off, ID042 off, ID044 off
select emp_name, case when salary > 5000 then 'high' else 'low' end as band
from   employee
ID026 on, ID042 on, ID044 on
select emp_name,
       case
           when salary > 5000 then 'high'
           else 'low'
       end as band
from   employee
WHEN
IDOptionWhat it doesDefault
ID055ProLinebreak Before WHEN Keyword
LBB_CASE_WHEN
Puts each WHEN on a new line. This is the option that turns a CASE expression into a readable decision table.on
ID043ProLinebreak After WHEN Keyword
LBA_CASE_WHEN
Starts the condition on the line after the WHEN keyword.on
ID048ProIndent WHEN Conditions
IND_CASE_WHEN
Indents the WHEN conditions one level deeper than CASE, subordinating the branches to the expression.on

This is the option that turns a CASE expression into a readable decision table: one branch per line, comparable top to bottom.

ID055 off
case when salary > 5000 then 'high' when salary > 2000 then 'mid' else 'low' end
ID055 on, ID048 on
case
    when salary > 5000 then 'high'
    when salary > 2000 then 'mid'
    else 'low'
end
THEN
IDOptionWhat it doesDefault
ID052ProLinebreak Before THEN Keyword
LBB_CASE_THEN
Puts THEN on a new line, separating each condition from its result.on
ID046ProLinebreak After THEN Keyword
LBA_CASE_THEN
Starts the result value on the line after THEN.off
ID085ProIndent THEN Keyword
IND_CASE_THEN
Indents THEN one level deeper than its WHEN.off
ID052 off
case
    when salary > 5000 then 'high'
    when salary > 2000 then 'mid'
end
ID052 on
case
    when salary > 5000
    then 'high'
    when salary > 2000
    then 'mid'
end

Tip: Add ID085 to indent the THEN line one level below its WHEN, which keeps the condition and its result visually paired.

ELSE
IDOptionWhat it doesDefault
ID053ProLinebreak Before ELSE Keyword
LBB_CASE_ELSE
Puts ELSE on a new line, aligned with the WHEN branches.on
ID047ProLinebreak After ELSE Keyword
LBA_CASE_ELSE
Starts the default value on the line after ELSE.off
ID086ProIndent ELSE Keyword
IND_CASE_ELSE
Indents ELSE one level deeper.off
ID053 off
case
    when salary > 5000 then 'high' else 'low'
end
ID053 on
case
    when salary > 5000 then 'high'
    else 'low'
end

CASE Conditions

Applies to the boolean expression inside a WHEN, not to the CASE expression as a whole.

Brackets
IDOptionWhat it doesDefault
ID117ProLinebreak Before '('
LBB_OPENCASEBRACKET
Puts the opening bracket of a WHEN condition on a new line.off
ID118ProLinebreak After '('
LBA_OPENCASEBRACKET
Starts the condition on the line after the opening bracket.on
ID119ProLinebreak Before ')'
LBB_CLOSECASEBRACKET
Puts the closing bracket on a new line.off
ID120ProLinebreak After ')'
LBA_CLOSECASEBRACKET
Starts whatever follows on the line after the closing bracket.off
ID118 off
when (salary > 5000 and job = 'MGR') then 'senior'
ID118 on
when (
         salary > 5000
         and job = 'MGR'
     ) then 'senior'
AND/OR
IDOptionWhat it doesDefault
ID056ProLinebreak Before AND/OR
LBB_CASE_ANDOR
Starts each additional part of a WHEN condition on its own line, led by AND or OR.on
ID061ProLinebreak After AND/OR
LBA_CASE_ANDOR
Puts the condition on the line after the operator.off
ID254ProIndent AND/OR in CASE Condition
IND_CASE_ANDOR
Indents the AND / OR operators inside a WHEN condition one level deeper.off
ID056 off
when salary > 5000 and job = 'MGR' and active = 1 then 'senior'
ID056 on
when salary > 5000
     and job = 'MGR'
     and active = 1 then 'senior'

Small CASE Statements

IDOptionWhat it doesDefault
ID067ProNo Linebreak for CASE Statement smaller than this number o...
LB_WIDTH_SMALL_CASE
CASE expressions of up to and including this many characters are kept on one line. Prevents a two-branch flag conversion from occupying six lines. Set to 0 to always break.10

Keeps a two-branch flag conversion from occupying six lines.

ID067 = 0
select case
           when flag = 1 then 'Y'
           else 'N'
       end as active
from   employee
ID067 = 40
select case when flag = 1 then 'Y' else 'N' end as active
from   employee

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

ANSI DDL

Formatting for CREATE TABLE and related DDL. A table definition is read far more often than it is written – it is the reference for everyone working with the table – so a stable, column-per-line layout with aligned data types pays off over the lifetime of the schema.

ANSI DDL

Linebreak Before Comma
IDOptionWhat it doesDefault
ID249ProLinebreak Before Comma
LBB_COMMA_DDL
Leading commas in a column definition list: the comma opens the line of the column that follows. Mutually exclusive with ID250.off
ID249 off (trailing comma)
create table dept
(
    dept_nbr  integer not null,
    dept_name varchar(60),
    dept_zip  char(5)
)
ID249 on (leading comma)
create table dept
(
    dept_nbr  integer not null
  , dept_name varchar(60)
  , dept_zip  char(5)
)
Linebreak After Comma
IDOptionWhat it doesDefault
ID250ProLinebreak After Comma
LBA_COMMA_DDL
Trailing commas in a column definition list. Mutually exclusive with ID249.on
ID251ProMove Comma 2 Positions to the left with 1 Space (When ID24...
ALI_MOVE_COMMALEFT_DDL
Shifts a leading comma two positions left and puts one space after it. Mutually exclusive with ID252.off
ID252ProMove Comma 1 Position to the left with no Space (When ID24...
ALI_MOVE_COMMALEFTONE_DDL
Shifts a leading comma one position left with no space after it. Mutually exclusive with ID251.off
ID250 off
create table dept
(
    dept_nbr integer, dept_name varchar(60), dept_zip char(5)
)
ID250 on
create table dept
(
    dept_nbr  integer,
    dept_name varchar(60),
    dept_zip  char(5)
)
Brackets
IDOptionWhat it doesDefault
ID188ProLinebreak Before '('
LBB_OPENCREATEBRACKET
Puts the opening bracket of the column definition list on a new line.on
ID189ProLinebreak After '('
LBA_OPENCREATEBRACKET
Starts the first column definition on the line after the opening bracket.on
ID190ProLinebreak Before ')'
LBB_CLOSECREATEBRACKET
Puts the closing bracket on a new line.on
ID191ProLinebreak After ')'
LBA_CLOSECREATEBRACKET
Starts whatever follows – storage clauses, tablespace options – on the line after the closing bracket.on
All four off
create table dept (dept_nbr integer, dept_name varchar(60))
All four on
create table dept
(
    dept_nbr  integer,
    dept_name varchar(60)
)
Indenting
IDOptionWhat it doesDefault
ID192ProIndent Cols in Bracket
IND_CREATEBRACKETINSIDE
Indents the column definitions one level deeper than CREATE TABLE.on
ID193ProIndent Bracket
IND_CREATEBRACKETOUTSIDE
Indents the bracket itself relative to the CREATE keyword.on
ID192 off
create table dept
(
dept_nbr  integer,
dept_name varchar(60)
)
ID192 on
create table dept
(
    dept_nbr  integer,
    dept_name varchar(60)
)

Tip: A table definition is read far more often than it is written – it is the reference for everyone working with the table. A stable column-per-line layout pays off over the lifetime of the schema.

My CREATE Keywords
IDOptionWhat it doesDefault
ID195ProMy CREATE Keywords getting Linebreaks before and after
MY_CREATEKEYWORDLIST
Your own DDL keywords, one per line. Each gets a linebreak before and after, which lets you give dialect-specific storage or partitioning clauses their own line.MyDDLKeyword1

With ID195 containing tablespace and partition by, each listed keyword gets a linebreak before and after it.

create table sales
(
    sale_id   integer,
    sale_date date
)
tablespace
    ts_sales
partition by
    range (sale_date)

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Procedure & Function Parameters

The parameter list in the header of a stored procedure or function is its public interface. These options place the brackets and the commas of that list, so that every parameter with its mode and data type occupies its own line.

Proceddure / Function Parameters

Linebreaks
IDOptionWhat it doesDefault
ID078ProLinebreak Before Comma
SP_LBB_COMMA
Leading commas in the parameter list: the comma opens the line of the parameter that follows.on
ID079ProLinebreak After Comma
SP_LBA_COMMA
Trailing commas in the parameter list.on
ID100ProLinebreak Before '('
SP_LBB_OPENPARMBRACKET
Puts the opening bracket of the parameter list on a new line, separating it from the procedure name.on
ID101ProLinebreak After '('
SP_LBA_OPENPARMBRACKET
Starts the first parameter on the line after the opening bracket.on
ID102ProIndent Parameter in Brackets
SP_IND_PARMBRACKET
Indents the parameters one level deeper than the procedure name.on
ID103ProLinebreak Before ')'
SP_LBB_CLOSEPARMBRACKET
Puts the closing bracket on a new line, where it terminates the signature.on
ID104ProLinebreak After ')'
SP_LBA_CLOSEPARMBRACKET
Starts whatever follows – RETURNS, AS, IS – on the line after the closing bracket.on
ID245ProMove Comma 2 Positions to the left with 1 Space (When ID10...
SP_ALI_MOVE_COMMALEFT_PARM
Shifts a leading comma two positions left and puts one space after it.off
ID246ProMove Comma 1 Position to the left with no Space (When ID10...
SP_ALI_MOVE_COMMALEFTONE_PARM
Shifts a leading comma one position left with no space after it.off

The parameter list is the public interface of the procedure. One parameter per line, with mode and data type aligned, makes it readable as a signature.

All off
create procedure raise_salary (p_emp_nbr in integer, p_pct in number, p_result out varchar2) as
ID100, ID101, ID102, ID103, ID104 on
create procedure raise_salary
(
    p_emp_nbr in  integer,
    p_pct     in  number,
    p_result  out varchar2
)
as

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

IF THEN ELSE & Conditions

Procedural code inside a stored procedure follows different rules from a SELECT statement. These options format IF / THEN / ELSE blocks, the BEGIN…END blocks nested within them, and the boolean conditions those blocks test.

IF THEN ELSE

IF
IDOptionWhat it doesDefault
ID037ProLinebreak After IF
LBA_IF
Starts the condition on the line after the IF keyword. Off by default, because a short condition reads well next to its IF.off
ID037 off
if v_salary > 5000 then
ID037 on
if
    v_salary > 5000 then
THEN
IDOptionWhat it doesDefault
ID038ProLinebreak Before THEN
LBB_IF_THEN
Puts THEN on a new line, so it terminates the condition rather than trailing it.on
ID039ProLinebreak After THEN
LBA_IF_THEN
Starts the block body on the line after THEN.on
ID038 off, ID039 off
if v_salary > 5000 then v_band := 'high';
ID038 on, ID039 on
if v_salary > 5000
then
    v_band := 'high';
ELSE
IDOptionWhat it doesDefault
ID041ProLinebreak After ELSE
LBA_IF_ELSE
Starts the block body on the line after ELSE.on
ID024ProIndent THEN
IND_IF_THEN
Indents the statements of the THEN branch one level deeper than the IF.off
ID025ProIndent ELSE
IND_IF_ELSE
Indents the statements of the ELSE branch one level deeper.off
ID030ProIndent BEGIN
IND_BEGIN_END
Indents the contents of a BEGIN…END block one level deeper. Applies to blocks in IF, ELSE, WHILE, LOOP and similar constructs, and is what makes the nesting of procedural code visible.off

ID024 and ID025 are what make the nesting of procedural code visible.

ID024 off, ID025 off
if v_salary > 5000 then
v_band := 'high';
else
v_band := 'low';
end if;
ID024 on, ID025 on
if v_salary > 5000 then
    v_band := 'high';
else
    v_band := 'low';
end if;

Tip: ID030 does the same for BEGIN…END blocks nested inside IF, ELSE, WHILE and LOOP constructs.

Conditions

IDOptionWhat it doesDefault
ID014ProLinebreak Before AND/OR
LBB_AND
Starts each condition on its own line, led by AND or OR.on
ID015ProLinebreak After AND/OR
LBA_AND
Puts the condition on the line after the operator.on
ID014 off
if v_salary > 5000 and v_job = 'MGR' and v_active = 1 then
ID014 on
if v_salary > 5000
   and v_job = 'MGR'
   and v_active = 1 then
Conditions
IDOptionWhat it doesDefault
ID093ProLinebreak Before '('
SP_LBB_OPENCONDITIONBR
Puts the opening bracket of a condition group on a new line.on
ID094ProLinebreak After '('
SP_LBA_OPENCONDITIONBR
Starts the first condition on the line after the opening bracket.on
ID097ProIndent Conditions in Brackets
SP_IND_CONDITIONBR
Indents the conditions inside the brackets one level deeper.on
ID098ProLinebreak Before ')'
SP_LBB_CLOSECONDITIONBR
Puts the closing bracket on a new line.on
ID099ProLinebreak After ')'
SP_LBA_CLOSECONDITIONBR
Starts whatever follows on the line after the closing bracket.on
ID139ProAlign Comparison Operators (=,<>,>,<,>=,<=) in Conditions
SP_ALI_EQUAL
Aligns the comparison operators inside conditions into a column, so the compared values form a readable right-hand column.on

ID139 additionally aligns the comparison operators, so the tested values form a readable right-hand column.

ID094 off, ID097 off, ID139 off
if (v_salary > 5000 and v_job = 'MGR' and v_dept = 10) then
ID094 on, ID097 on, ID139 on
if
(
    v_salary > 5000
    and v_job   = 'MGR'
    and v_dept  = 10
)
then

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Stored Procedure Variables

Three alignment options for the variable declarations and assignments in procedural code. A declaration block with aligned data types reads like a table, which makes an omitted or mistyped declaration easy to spot.

Stored Procedure Variables

Variables
IDOptionWhat it doesDefault
ID051ProAlign Variable Declarations
ALI_DECLARATION
Aligns the data types of variable declarations into a column. A declaration block then reads like a table, and an omitted type is obvious.on
ID137ProAlign Variable Association Operatorts (=>)
ALI_ASSOCIATIONOPERATOR
Aligns the named-parameter operator in procedure calls, so that parameter names and their values form two columns.on
ID140ProAlign Variable Assignment Operators (:=, =:, *=, =*)
SP_ALI_ASSIGNMENT
Aligns assignment operators, so that the assigned expressions start at a common column.on

An aligned declaration block reads like a table &ndash; an omitted or mistyped declaration is then obvious.

ID051 off, ID140 off
declare
    v_emp_nbr integer;
    v_employee_name varchar2(60);
    v_salary number(9,2);
begin
    v_salary := 0;
    v_employee_name := 'unknown';
ID051 on, ID140 on
declare
    v_emp_nbr       integer;
    v_employee_name varchar2(60);
    v_salary        number(9,2);
begin
    v_salary        := 0;
    v_employee_name := 'unknown';

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Stored Procedure Statements

Comma placement for lists that appear in procedural statements – the argument list of a procedure call, an INTO target list, and similar constructs outside a regular SELECT.

Stored Procedure Statements

Statements
IDOptionWhat it doesDefault
ID243ProLinebreak Before Comma in Statement
SP_LBB_COMMA_STATEMENT
Leading commas in the lists of procedural statements, such as a procedure call's argument list.off
ID244ProLinebreak After Comma in Statement
SP_LBA_COMMA_STATEMENT
Trailing commas in the lists of procedural statements.on
ID247ProMove Comma 2 Positions to the left with 1 Space (When ID24...
SP_ALI_MOVE_COMMALEFT_STMT
Shifts a leading comma two positions left and puts one space after it.off
ID248ProMove Comma 1 Position to the left with no Space (When ID24...
SP_ALI_MOVE_COMMALEFTONE_STMT
Shifts a leading comma one position left with no space after it.off

A SQL Server EXEC call: the parameters follow the procedure name directly, without brackets, which is exactly the kind of list these options govern.

ID244 on (trailing comma)
exec dbo.usp_update_employee
    @emp_nbr   = 4711,
    @emp_name  = 'Smith',
    @dept_nbr  = 10,
    @salary    = 5200.00,
    @hire_date = '2026-01-15';
ID243 on (leading comma)
exec dbo.usp_update_employee
    @emp_nbr   = 4711
  , @emp_name  = 'Smith'
  , @dept_nbr  = 10
  , @salary    = 5200.00
  , @hire_date = '2026-01-15';

Tip: These options apply to lists in procedural statements only – an EXEC or CALL argument list, an INTO target list. The parameter list in a procedure header is on the Procedure & Function Parameters page, and lists inside a regular SELECT are on the Comma Separated Lists page.

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.

Extract & Generate SQL

SQLinForm can work on SQL that is embedded in application source code: it extracts the statement from the surrounding string concatenation, formats it, and writes it back wrapped in the syntax of your programming language. These options define the string delimiter to look for and the code template to emit.

Extract SQL from Code

Used by the Extract SQL from Source Code command: SQLinForm strips the surrounding programming-language syntax, formats the SQL it finds, and can then re-wrap it using the settings below.

IDOptionWhat it doesDefault
ID021FreeSQL Enclosing Character
SRCE_IS_ENCLOSED_CHAR
The character that encloses the SQL string in your source code – a double quote in most languages. SQLinForm uses it to find where the embedded statement begins and ends.''

ID021 tells SQLinForm which character encloses the SQL string in your source code.

Source code (ID021 = ")
sql.append("select dept_nbr, dept_name ");
sql.append("from dept where dept_zip = '64521'");
Extracted and formatted
select dept_nbr,
       dept_name
from   dept
where  dept_zip = '64521'

Generate SQL Code

Pre-Defined Programming Language
IDOptionWhat it doesDefault
ID001FreeSpecify the Programming Language in which you want to incl...
OUTPUT_LANGUAGE
The programming language of the generated output. SQLinForm wraps the formatted SQL in that language's string syntax, ready to paste back into your code. Pick My Output Format to define your own template below.
Choices: SQL, My Output Format, ASP StringBuilder, C# StringBuilder(1), C# StringBuilder(2), Concatenated SQL(1), Concatenated SQL(2), Java StringBuffer(1), Java StringBuilder(1), Java String(1) ... (23 in total)
SQL
ID054FreeSpecidy the Variable Name which should be used in the abov...
MY_VARIABLENAME
The variable name used in the generated code.SQL
ID001 = SQL
select dept_nbr,
       dept_name
from   dept
ID001 = C# StringBuilder(1), ID054 = sql
StringBuilder sql = new StringBuilder();
sql.Append("select dept_nbr, ");
sql.Append("       dept_name ");
sql.Append("from   dept ");
My Output Format - Settings
IDOptionWhat it doesDefault
ID161FreeSpecify the first line of your code preceding the actual S...
FIRSTLINEPREFIX
The first line emitted before the SQL – typically a variable declaration.StringBuilder sql = new StringBu...
ID163FreeSpecify the code envelopping your SQL on the left side
BODYLINEPREFIX
The text placed to the left of every SQL line.sql.append(''
ID164FreeSpecify the code envelopping your SQL on the right side
BODYLINESUFFIX
The text placed to the right of every SQL line. '');
ID166FreeSpecify the code envelopping your SQL on the right side fo...
LASTLINESUFFIX
The text placed to the right of the last SQL line, where a statement is usually terminated differently from the lines before it. '');
ID167FreeLinebreak Before Last Line Suffix (ID166)
LBB_LASTLINESUFFIX
Puts the last-line suffix on a line of its own.off

The four template fields and the code they produce. Used when ID001 is set to "My Output Format".

-- ID161 first line prefix : StringBuilder sql = new StringBuilder();
-- ID163 body line prefix  : sql.append("
-- ID164 body line suffix  : ");
-- ID166 last line suffix  : ").toString();

StringBuilder sql = new StringBuilder();
sql.append("select dept_nbr, ");
sql.append("       dept_name ");
sql.append("from   dept ").toString();

Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.