Значения в языке Informix 4gl

У меня есть поле под названием "UCN", которое имеет 6 символов. Это поле может иметь как символьное, так и числовое значение, например "A123Y5", "12345Y" или "G23561", что-то вроде этого.

Нам нужно напечатать данные отсюда с Pipe как A | 1 | 2 | 3 | Y | 5.

Я могу поставить Integer с помощью ключевого слова using, но не могу соединить оба.

Пожалуйста, если кто-нибудь может помочь Мукешу

3 ответа

Я не думаю, что есть короткий путь. Тебе нужно:

PRINT ucn[1], '|', ucn[2], '|', ucn[3], '|', ucn[4], '|', ucn[5], '|', ucn[6]

Если бы он был немного длиннее, вы могли бы вместо этого использовать цикл; это имеет свою собственную лживость.

Если вы работаете на того, на кого, я думаю, вы работаете, я могу дать вам ответ, используя некоторые расширения Genero для 4GL. Создайте библиотечную функцию как...

FUNCTION insert_between_each_char(str,delimiter)
DEFINE str STRING
DEFINE delimiter CHAR(1)

DEFINE sb base.StringBuffer
DEFINE i INTEGER

    LET sb = base.StringBuffer.create()
    CALL sb.append(str)
    FOR i = sb.getLength() TO 2 STEP -1
        CALL sb.insertAt(i,delimiter)
    END FOR
    RETURN sb.toString()
END FUNCTION

... и тогда ваш код становится

PRINT insert_between_each_char(ucn,"|")

Вот код для зацикливания, упомянутый Джонатаном:

   DEFINE 
      l_result   char(512),
      l_sel      LIKE table.UCN,
      i          integer

     LET l_sel = "A123Y5" #Or select into l_sel

     FOR i = 1 to length(l_sel)
        IF i < length(l_sel)
        THEN
           LET l_result = l_result, l_sel[i], "|"
        END IF
     END FOR

     PRINT l_result
Другие вопросы по тегам