2015-08-05 4 views
1

Я использовал VARRAY хранить мой максимум двух мобильных номеров в моей клиентской таблице:SQL-запрос для извлечения данных из VARRAY

create or replace type mobile_array as varray(2) of 
varchar2(11); 

Im пытается произвести запрос, который фильтрует мобильные номера, начинающиеся с '0770'. Поскольку я использовал varray, я не уверен, как я подхожу к запросу, чтобы принять varray, поскольку он содержит данные, которые я хочу запросить. Я попытался это сделать, но я, кажется, не добился большого прогресса.

select c.custname.firstname,c.custmobile.mobile_array 
from customer c 
where c.custmobile.mobile_array like '0770%'; 

Любое руководство или помощь будут оценены.

ответ

0

Возможно, вы захотите использовать временную таблицу или представление.

создать таблицу #tmp (ID INT идентичность не нулевой, мобильный VARCHAR (11), CustomerID INT)

А потом

выберите c.custname .firstname, tmp.mobile от клиента c внутреннее соединение #tmp tmp на c.customerid = tmp.customerid , где tmp.mobile как '0770%';

+0

Я не знаком с временными таблицами или представлениями, есть ли способ создать запрос, сохраняющий разброс? Или я слишком усложняю это? – user3487430

+0

Да, есть, но вы решили добавить поля в таблицу вместо использования varray ?. Попробуйте это >> SELECT t1.custname, t2.column_value FROM custmobile t1, ТАБЛИЦА (t1.custmobile) t2 ГДЕ t2.custmobile like '0770%'; [Источник] (http://www.orafaq.com/wiki/VARRAY) – CAPD

+0

Его проект, который требует, чтобы я использовал как можно больше объектно-реляционных функций, поэтому я пытаюсь сохранить varray и создать запрос с помощью текущий дизайн таблицы, так как я не хочу его деконструкцию в настоящее время. – user3487430

Смежные вопросы