The Leading Educational Resource for IT Professionals

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


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)



…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)



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)



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:





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‘




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

Also in MC Press Articles

Customer (Citizen) Identity and Access Management


As a major trend in the IDM sector, consumerization has become easier and exponentially more important. Digital transformation will literally put a significant segment of the SME market out of business and propel a significant number of SMEs to new levels of prosperity.

Continue Reading →

Federated Authentication – there is no Plan B


Federated authentication is essential for businesses. It's the only way to effectively manage external access to business systems and it's absolutely necessary in order to manage authentication to SaaS apps. if you don't want to expose your identity records to potential compromise.

Continue Reading →

Access Control – RBAC & ABAC


Access Control is the core of the identity and access management task. Once we have correctly provisioned user data into the enterprise’s identity service we need to leverage it for access control. The vast majority of organizations use role-based access control, but increasingly, access control based on attributes is gaining traction.

Continue Reading →