[ https://issues.apache.org/jira/browse/CALCITE-5451?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jess Balint closed CALCITE-5451. -------------------------------- Resolved in release 1.33.0 (2023-02-06) > Implement LPAD() and RPAD() functions > ------------------------------------- > > Key: CALCITE-5451 > URL: https://issues.apache.org/jira/browse/CALCITE-5451 > Project: Calcite > Issue Type: Improvement > Reporter: Oliver Lee > Assignee: Oliver Lee > Priority: Minor > Labels: pull-request-available > Fix For: 1.33.0 > > Time Spent: 40m > Remaining Estimate: 0h > > Adding in LPAD() and RPAD()for BIG_QUERY as per > [https://g3doc.corp.google.com/company/teams/googlesql/reference/string_functions.md?cl=head#lpad] > and > [https://g3doc.corp.google.com/company/teams/googlesql/reference/string_functions.md?cl=head#rpad] > describes > > {{LPAD(original_value, return_length[, pattern])}} > {quote}Returns a {{STRING}} or {{BYTES}} value that consists of > {{original_value}} prepended with {{{}pattern{}}}. The {{return_length}} is > an {{INT64}} that specifies the length of the returned value. If > {{original_value}} is of type {{{}BYTES{}}}, {{return_length}} is the number > of bytes. If {{original_value}} is of type {{{}STRING{}}}, {{return_length}} > is the number of characters. > The default value of {{pattern}} is a blank space. > Both {{original_value}} and {{pattern}} must be the same data type. > If {{return_length}} is less than or equal to the {{original_value}} length, > this function returns the {{original_value}} value, truncated to the value of > {{{}return_length{}}}. For example, {{LPAD('hello world', 7);}} returns > {{{}'hello w'{}}}. > If {{{}original_value{}}}, {{{}return_length{}}}, or {{pattern}} is > {{{}NULL{}}}, this function returns {{{}NULL{}}}. > This function returns an error if: > * {{return_length}} is negative > * {{pattern}} is empty{quote} > > LPAD Examples: > LPAD('12345', 8, 'a') -> "aaa12345" > LPAD('12345', 8) -> " 12345" > LPAD('12345', 8, 'ab') -> "aba12345" > LPAD('12345', 8, 'a') -> "aaa12345" > LPAD('12345', -3) -> error > LPAD('12345', 3, '') -> error > > ---- > > {{RPAD(original_value, return_length[, pattern])}} > > {quote}Returns a {{STRING}} or {{BYTES}} value that consists of > {{original_value}} appended with {{{}pattern{}}}. The {{return_length}} > parameter is an {{INT64}} that specifies the length of the returned value. If > {{original_value}} is {{{}BYTES{}}}, {{return_length}} is the number of > bytes. If {{original_value}} is {{{}STRING{}}}, {{return_length}} is the > number of characters. > The default value of {{pattern}} is a blank space. > Both {{original_value}} and {{pattern}} must be the same data type. > If {{return_length}} is less than or equal to the {{original_value}} length, > this function returns the {{original_value}} value, truncated to the value of > {{{}return_length{}}}. For example, {{RPAD('hello world', 7);}} returns > {{{}'hello w'{}}}. > If {{{}original_value{}}}, {{{}return_length{}}}, or {{pattern}} is > {{{}NULL{}}}, this function returns {{{}NULL{}}}. > This function returns an error if: > * {{return_length}} is negative > * {{pattern}} is empty{quote} > > RPAD Examples: > RPAD('12345', 8, 'a') -> "12345aaa" > RPAD('12345', 8) -> "12345. " > RPAD('12345', 8, 'ab') -> "12345aba" > RPAD('12345', 8, 'a') -> "12345aaa" > RPAD('12345', -3) -> error > RPAD('12345', 3, '') -> error -- This message was sent by Atlassian Jira (v8.20.10#820010)