A while ago I had a problem where I wanted to change the first two characters in a table and I used the very simple concat and subst operations to do it with SQL. Today, we had a slightly more complex requirement of updating text in the middle of a field using SQL, or in other other words, squeezing some data into a field in a database.
Example: Imagine a flat file (aka table) has one big field (aka column) and we want to change two characters at position 69 & 70 dependent on certain conditions.
So, we are effectively squishing three things together — the beginning bit of data, our new characters and the end bit.
The trouble is, concat only allows two things to be squished together and since we need to update characters in the middle of a string -we are going to simply use concat twice:
update fileset set fieldA = concat( substr(fieldA,1,68) , concat('T1' , substr(fieldA,71))) where fieldB = 'stuff' and fieldC = 'otherstuff'
Works like a charm!
IBM i Software Developer, Digital Dad, AS400 Anarchist, RPG Modernizer, Alpha Nerd and Passionate Eater of Cheese and Biscuits. Nick Litten Dot Com is a mixture of blog posts that can be sometimes serious, frequently playful and probably down-right pointless all in the space of a day. Enjoy your stay, feel free to comment and in the words of the most interesting man in the world: Stay thirsty my friend.
Copying iSeries fields from numeric to Alpha – aka using SQL to change column data type
Developerworks Connections Sunset – How to Extend RDi
Why use IBM i RDi?
How to Install IBM Access Client Solutions (ACS)
5733XJ1 IBM i Access Client Solutions – QuickStartGuide
Install LANSA AXES – Automatic Web Interface for IBM i (AS/400) 5250 Applications
How to get a list of all files in an IFS folder
Edit MENU with IBM i RDI
Encrypt IBM i File (Table) Data with no RPGLE changes using SQL