Join on Key Fields of Differing Data Types

Join on Key Fields of Differing Data Types

I am trying to create some reports with a third party reporting tool accessing an Informix 7 database, which was not written by us. I want to join two tables, but the key field is a char in one table and numeric in the other. This would be a valid join otherwise. How can I write a SQL statement to join these two tables?

It can be done, but performance may be a problem. The trick is to force the numeric field into being considered a character field, much like a CAST statement does in C. To do this, concatenate a null to the numeric, and the result will be a character:

SELECT * from table1, table2WHERE  numericfield || "" = characterfield;

Using an expression in a WHERE clause is not efficient, so the performance may not be acceptable. If it is not satisfactory, I would add a character field to the table with the numeric join field, and populate the new field with the character version of the numeric field. Then do the join on the two character fields. If you can afford the space taken up by the extra field, your performance will be much better.


About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist