The Leading Educational Resource for IT Professionals

SQL 101: String-Related Functions, Part 5—Cutting and Stitching Strings

by Victoria Mack May 12, 2016 0 Comments

Stringscaping continues! This article explores functions to extract parts of a string that are similar to MS Excel functions and ways to stitch the strings back together. This “stitching” will introduce another function: LENGTH.

 

The functions discussed in the previous article allow you to add, replace, and remove characters from a string. While this is interesting and somewhat useful, being able to “stitch” two strings together is usually more useful. This article covers a group of functions that helps with that task.

 

You are probably familiar with MS Excel’s LEFT and RIGHT functions. LEFT and RIGHT allow you to extract the leftmost or rightmost n characters of a string. Most people know these functions but are not aware that there’s another one, named MID, that would be the long-lost twin brother of RPG’s %SUBSTR BIF if this were a soap opera. Well, LEFT and RIGHT also exist in SQL, along with the equivalent to the %SUBSTR BIF. While the following paragraphs won’t bring a lot of new information, I recommend you read them carefully, because I’ll use these functions in the “Embedding SQL in Your RPG Code” subseries as well as later in this series and also because they have some interesting details you might not be aware of.

 

Let’s begin with LEFT; just like its MS Excel namesake, LEFT returns the leftmost n characters of a given string. The following statement…

 

SELECT            LEFT(‘THIS IS A TEST‘, 7)

FROM        SYSIBM.SYSDUMMY1

 

…returns ‘THIS IS’ because I specified a 7 in the function’s second parameter, thus indicating that I wanted the first (or leftmost) 7 characters of the input string. You can probably guess what happens when I use the RIGHT function with the same parameters:

 

SELECT            RIGHT(‘THIS IS A TEST‘, 7)

FROM        SYSIBM.SYSDUMMY1

 

The system will return ‘ A TEST’ because those are the last (or rightmost) 7 characters of the input string. Of course, you can always use SQL’s SUBSTR function for the same purpose; you just need to adjust the parameters accordingly. Just like MS Excel’s MID function, SUBSTR has three parameters: input string, start position, and length to extract. Now I’ll indicate that I want to start in position 1 and that my intention is to extract 7 characters:

 

SELECT            SUBSTR(‘THIS IS A TEST‘, 1, 7)

FROM        SYSIBM.SYSDUMMY1

 

I’ll be getting the same ‘THIS IS’ string that the sample statement with the LEFT function produced. Slightly trickier is emulating the RIGHT function with SUBSTR because you need to know the length of the string in order to determine where to start extracting. For that, SQL has a LENGTH function, similar to its RPG’s %LEN; simply indicate a literal string, a field, or an expression and the system returns the length, in characters, of it. So I can use SUBSTR and LENGTH together in a little function-nesting example to emulate the RIGHT function’s functionality:

 

SELECT            SUBSTR(‘THIS IS A TEST‘, LENGTH(‘THIS IS A TEST’) - 6, 7)

FROM        SYSIBM.SYSDUMMY1

 

Such an expression is always evaluated from the inside out, i.e., the innermost function is evaluated first, its result is passed to the function that uses that innermost function as parameter, and so on, until the whole expression can be evaluated. In this case, this means that the system will calculate the expression LENGTH(‘THIS IS A TEST’) – 6 before performing the SUBSTRING operation. As expected, the final output is the same ‘ A TEST’ string that the aforementioned RIGHT function produced.

 

LEFT, RIGHT, and SUBSTR allow you to extract parts of a string. That covers the first part of “stitching” strings together. The actual stitching process can be easily performed with SQL’s concatenation operatoraka double pipe (||)or the CONCAT function. Here’s an example that covers both methods:

 

SELECT            ‘THIS IS A ‘ || ‘TEST‘

, CONCAT(‘THIS IS A ‘, ‘TEST‘)

FROM        SYSIBM.SYSDUMMY1

 

Both operations return the exact same thing: ‘THIS IS A TEST‘. While the first method is similar to RPG’s concatenation method (simply replace the double pipe with a plus sign and you have RPG’s concatenation operation), the second one likens MS Excel’s Concatenate function. I usually use the double pipe, because of its similarity to RPG, but feel free to use whichever you prefer; the result will be the same.

 

This concludes the SQL string-related functions (not-so-brief) overview. I didn’t cover all the available functions, just the ones I think are the most useful. I’ll move on to the date-related functions, with the same approach: covering the most interesting with reasonable depth and a few examples.

 

If the examples provided were not enough to clear your doubts, use the comments section; I’ll try to help with additional examples and/or explanations.

 

About the Author: Rafael Victória-Pereira




Victoria Mack
Victoria Mack

Author



Also in MC Press Articles

Access Control – RBAC & ABAC

by Graham Williamson May 04, 2017 0 Comments

Continue Reading →

Identity Management Provisioning and Workflow – A core competence

by Graham Williamson April 13, 2017 0 Comments

Identity provisioning, with an approval workflow, is a core competence for CIOs yet many struggle with a confusing array of tasks that form the provisioning process within their organisations.

Continue Reading →

Identity Management - Why Is the Level of Interest So Low?

by Graham Williamson April 11, 2017 0 Comments

It's critical that CIOs and C-levels pay attention to identity and access management in their organizations. Doing so will boost business security and save the business money, too.

Continue Reading →