Firebird Documentation Index → Firebird 2.1 Language Ref. Update → External functions (UDFs) → lpad |
Library: ib_udf
Added in: 1.5
Changed in: 1.5.2, 2.0
Better alternative: Internal function LPAD()
Description: Returns the input string left-padded with padchar
s until endlength
is reached.
Result type: VARCHAR(n
)
Syntax:
lpad (str
,endlength
,padchar
)
Declaration:
DECLARE EXTERNAL FUNCTION lpad CSTRING(255) NULL, INTEGER, CSTRING(1) NULL RETURNS CSTRING(255) FREE_IT ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf'The above declaration is from the file
ib_udf2.sql
. The NULLs after the CSTRING arguments are an optional addition that became available in Firebird 2. If an argument is declared with the NULL keyword, the engine will pass aNULL
argument value unchanged to the function. This leads to aNULL
result, which is correct. Without the NULL keyword (your only option in pre-2.0 versions),NULL
s are passed to the function as empty strings and the result is a string withendlengh
padchars (ifstr
isNULL
) or a copy ofstr
itself (ifpadchar
isNULL
).For more information about passing
NULL
s to UDFs, see the note at the end of this book.
Notes:
Depending on how you declare it (see CSTRING note), this function can accept and return strings of up to 32767 characters.
When calling this function, make sure endlength
does not exceed the declared result length.
If endlength
is less than str
's length, str
is truncated to endlength
. If endlength
is negative, the result is NULL
.
A NULL
endlength
is treated as if it were 0.
If padchar
is empty, or if padchar
is NULL
and the function has been declared without the NULL keyword after the last argument, str
is returned unchanged (or truncated to endlength
).
Before Firebird 2.0, the result type was CHAR(n
).
A bug that caused an endless loop if padchar
was empty or NULL
has been fixed in 2.0.
In Firebird 1.5.1 and below, the default declaration used CSTRING(80) instead of CSTRING(255).
Firebird Documentation Index → Firebird 2.1 Language Ref. Update → External functions (UDFs) → lpad |