Как выбрать по элементам в многозначном поле UniData

Я пытаюсь выполнить специальный поиск записей, которые содержат повторяющиеся значения в первом и втором элементах многозначного поля UniData. Я надеялся, что что-то подобное сработает, но мне не повезло.

LIST PERSON WITH EVAL "STATUS[1] = STATUS[2]"

После некоторого тестирования похоже, что я наткнулся на способ чтения поля справа налево от такого количества символов. Интересно, но не полезно для того, что мне нужно.

LIST PERSON NAME EVAL "NAME[3]" COL.HDG 'Last3'

PERSON Name  Last3
0001   Smith ith

Любые идеи о том, как правильно выбрать конкретные элементы поля?

Очевидно, функция EXTRACT позволит мне указать элемент, но я до сих пор не могу заставить его работать правильно.

LIST PERSON STATUS EVAL "EXTRACT(STATUS,1,2,0)" COL.HDG 'Status2'

PERSON STATUS    Status2
0001   Added     Processed
       Processed 

1 ответ

Решение

Я бы использовал eval с заполнителем @RECORD с обозначением динамического массива как таковым (при условии, что STATUS находится в атрибуте 11).

Изменить: предыдущий ответ был, как я бы сделал это в UniVerse

SELECT PERSON WITH EVAL "@RECORD<11,1>" EQ EVAL "@RECORD<11,2>"

Скрипт Wolf - лучший способ, который работает в UniVerse и UniData.

SELECT PERSON WITH EVAL "EXTRACT(@RECORD,11,1,0)" EQ EVAL "EXTRACT(@RECORD,11,2,0)"

Удачи.

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