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 |