2016-01-27 2 views
0

У меня есть требование, когда мне нужно выбрать несколько имен пользователей из таблицы на основе аналогичного условия.Использование как в Teradata для нескольких значений

UserName_Table: 
Username_column 
-------- 
Nicky 
Nolan 
Megan 
Fox 
Federar 
Fager 

Запрос будет:

Select Username_column 
from UserName_Table 
where Username_column like Any ('N%','Megan'); 

это даст результат:

Username_column 
-------- 
Nicky 
Nolan 
Megan 

Здесь возникает вопрос: Я хочу поставить ('N%', 'Меган) в таблице, которая будет заполнена от бизнес-пользователей. Произнесите таблицу User_Filter.

User_Filter_Table: 
User_Filter_column 
----------------- 
N% 
Megan 

Я изменил свой запрос, как показано ниже, чтобы получить фильтр из таблицы.

Select Username_column 
from UserName_Table 
where Username_column like Any (Select User_Filter_column from User_Filter_Table); 

Жутко это дает результат ниже:

Username_column 
-------- 
Megan 

Почему запрос пропускается N%?

Не могли бы вы помочь?

Оцените помощь в Advance.

Thanks Santhosh

+0

Что тип данных 'User_Filter_column'? – dnoeth

+0

Это тип данных char. – Santhosha

+0

Я пробовал под вопросом странно Я вижу результаты, что хочу видеть. Выберите Username_column из UserName_Table где Username_column как Any (выберите trim (OREPLACE (User_Filter_column, '%', '')) || '%' из User_Filter_Table); – Santhosha

ответ

2

LIKEделает не игнорировать конечные пробелы.

'Nicky' LIKE 'N% ' -> false 
'Nicky ' LIKE 'N% ' -> true 

Изменение типа данных в VarChar или добавить TRIM:

where Username_column like Any (Select TRIM(TRAILING FROM User_Filter_column) from User_Filter_Table); 
Смежные вопросы