Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-25015

Custom formatting of strings in MariaDB queries

    XMLWordPrintable

Details

    Description

      Formatting more complex strings in a SELECT statement can get awkward when there are many concat(), format(), etc calls involved.
      It would be very cool and helpful to have a function that takes an input string and a formatting specification and returns string formatted using the rules the user passed in the specification.

      A great example for such a function is the classic C printf function, which, in this context, would look something like:

      SELECT printf('%s %s, %s', first_name, last_name, job_title) from employees;

      But it doesn't necessarily need to look this way, an alternative syntax could be Python-ish, which would leverage the fact that the server already knows the datatype of each field used in the formatting scheme:

      SELECT sformat('arg1: {}, arg2: {}', col1, col2) from table;

      In that syntax one passes formatting options within the curly braces:

      -- Print 'arg1: col1, arg2: col2'  where col1 from table is of datetime type and should be printed as: 'Sunday November 2021'
      SELECT sformat('arg1: {%W %M %Y}, arg2: {}', col1, col2) from table;
      

      Ideally, this new function should use, behind the scenes, the existing builtin formatting functions in MariaDB (e.g. date_format(), format()) and even future formatting functions (e.g. MySQL's format_bytes(), format_pico_time()), so the syntax has to be designed in a smart way to accommodate easily future additions.

      Attachments

        Issue Links

          Activity

            People

              serg Sergei Golubchik
              robertbindar Robert Bindar
              Votes:
              1 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.