【问题标题】:Using like in Teradata for multiple values在 Teradata 中对多个值使用 like
【发布时间】:2016-05-04 23:12:37
【问题描述】:

我有一个要求,我必须根据类似条件从表中选择多个用户名。

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%','Megan') 放入一个将由业务用户填充的表中。说表 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%?

有人可以帮忙吗?

提前感谢您的帮助。

谢谢 桑托什

【问题讨论】:

  • User_Filter_column的数据类型是什么?
  • 是char数据类型。
  • 我奇怪地尝试了下面的查询,我看到了我想看到的结果。 Select Username_column from UserName_Table where Username_column like Any (Select trim(OREPLACE(User_Filter_column, '%', ''))||'%'from User_Filter_Table);

标签: teradata


【解决方案1】:

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-05
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2023-03-12
    相关资源
    最近更新 更多