2016-01-27 55 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%?

任何人都可以請幫忙嗎?

欣賞提前幫助。

感謝 Santhosh

+0

什麼User_Filter_column'的'數據類型? – dnoeth

+0

它是char數據類型。 – Santhosha

+0

我嘗試了下面的查詢奇怪我看到結果我想看到的。從UserName_Table選擇Username_column 其中Username_column like Any(從User_Filter_Table選擇trim(OREPLACE(User_Filter_column,'%',''))||'%'; – 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);