## Syntax ```mermaid %%{init: { 'theme': 'base', 'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' }, 'themeVariables': { 'fontSize': '11px', 'fontFamily': 'Arial' } }}%% flowchart LR Start((START)) --> NORMALIZE[NORMALIZE]:::quoted NORMALIZE --> FUNCPARS1["("]:::quoted FUNCPARS1 --> FUNCPARS2[parameters] FUNCPARS2 --> FUNCPARS3[")"]:::quoted FUNCPARS3 --> End((END)) ``` ## Purpose The `NORMALIZE` SQL function normalises a file path for use as a filename by replacing all characters invalid for use in a file path by an underscore. Also, non-ASCII characters are replaced by an underscore. The resulting file path is simplified by various operations such as de-duplication of consecutive whitespace and underscore characters. Parameters: - Original file path (`varchar2`): path of the file. - Maximum file name length (`int32`): length in characters into which the normalised file name must fit. - Allow path separator (`boolean`): whether to allow the path separators `\` and `/` in the normalised file name. When not, occurrences are replaced by an underscore. Returns: a normalised file path. ## Examples The following example normalizes a file path into 16 characters, keeping the path separator: ```sql select normalize('abcdefghijklm%nopqrstuvwxyz', 16, true) ---------------- abcdefghijklm%no ``` The following example normalizes the same file path into 16 characters, replacing the path separator by an underscore: ```sql select normalize('abcdefghijklm/nopqrstuvwxyz', 16, false) ---------------- abcdefghijklm_no ```