Search code examples
sqlsasenterprise-guide

ERROR: Function SUBSTR requires a character expression as argument 1. and adding zeroes in front of data


My end goal is to add zeroes in front of my data, so 918 becomes 0918 and 10 becomes 0010 limited at 4 characters. My solution so far is to use SUBSTR like i do below:

PROC SQL;
   CREATE TABLE WORK.QUERY_FOR_DAGLIGEKORREKTION_0000 AS 
   SELECT (SUBSTR(line_item, 1, 4)) AS line_item, 
          (SUBSTR(column_item, 1, 4)) AS column_item
 
      FROM QUERY_FOR_DAGLIGEKORREKTIONER t1;
QUIT;

But when I run my query I get the following error:

ERROR: Function SUBSTR requires a character expression as argument 1.
ERROR: Function SUBSTR requires a character expression as argument 1.

This is my data set:

line_item   column_item     
918         10
230         10
260         10
918         10
918         10
918         10
70          10
80          10
110         10
250         10
35          10

What am I doing wrong? and is there another maybe easier way to add zeroes in fornt of my data? I hope you can lead me in the right direction.


Solution

  • I found a solution by searching for something similar to the Oracle solution by @d r and I found the following solution to the problem:

      put(line_item, z4.) AS PAD_line_item,
      put(column_item, z4.) AS PAD_column_item,
    

    resulting in:

    line_item   column_item
        0918    0010
        0230    0010
        0260    0010
        0918    0010
        0918    0010
        0918    0010
        0070    0010
        0080    0010
        0110    0010
        0250    0010
        0035    0010
    

    I hope this will help someone in the future with leading zeroes.