当前位置: 首页 > 面试题库 >

具有值列表的Teradata变量

蒋浩
2023-03-14
问题内容

有没有一种方法可以在变量中传递值列表,并在IN()语句中使用它来对照传入的值列表检查字段?

我唯一能想到的就是这样:

SELECT
  field_name
WHERE
  (SELECT INSTR(@variable_list, field_name))>0

谢谢。


问题答案:

TD14支持名为STRTOK_SPLIT_TO_TABLE的漂亮表函数:

REPLACE MACRO testmac(param VARCHAR(1000)) AS
(
SELECT * FROM dbc.DatabasesV AS db
JOIN 
 (
   SELECT token AS DatabaseName, tokennum
   FROM TABLE (STRTOK_SPLIT_TO_TABLE(1, :param, ',')
        RETURNS (outkey INTEGER, -- usually the PK of the table, here it's just a dummy
                 tokennum INTEGER, -- order of the token within the param string
                 token VARCHAR(128) CHARACTER SET UNICODE)
              ) AS d 
 ) AS dt
ON db.DatabaseName  = dt.DatabaseName
ORDER BY tokennum;
);

EXEC testmac('dbc,systemfe,syslib');


 类似资料:
  • 问题内容: 我遇到一个问题,其中Hibernate(4.1.8.FINAL)返回带有NULL值的列表(单向OneToMany映射)。 我得到的是: 我得到一个大小为21的列表,其中EntryAddress在第10个索引上,而2nd Entry Address在第20个索引上。 我所期望的 -我期望一个只有两个EntryAddress对象的List: 这是最小的源代码: 这是mysql结构(Inno

  • 问题内容: 因此,我有一个包含几个列表的列表,这些列表都首先包含三个字符串,然后是一个浮点数,例如: 如何制作一个返回最大值的函数(此处为9.1931)?我试过了 但这只是给我一个清单。 编辑:此外,以任何方式我可以获取值来自何处的索引?喜欢,来自哪个子列表? 问题答案: 循环浏览外部列表,然后选择每个子列表的最后一个元素: 最好将所有与函数相关的变量保留在范围内(将列表作为参数传递,并且不要通过

  • 我有一个具有name(string)和age(int)属性的类Person: 我创建了一个人的列表,并使用年龄进行比较。 如果两个项目的年龄相等,如何使用名称进行比较?

  • 这是对删除一组具有一定值的变量中的随机观察子集问题的一个细微变化。我正在寻找的变体是如何删除行的子集,其中删除的行数在分组条件每次更改时都会更改。这是一个简单的示例数据集,其中有一列数值和一个数值分组列(分组列也可以是“AA1”、“AA2”等因子)。 数据表(table(df$a))给出了以下结果: 例如:当分组值等于15时,我想随机删除4行;当组= 16时,随机删除7行;当组 = 17 时,随机

  • 问题内容: teradata中有一个交易历史记录表,仅当存在以下交易数据时,余额才会更改: 例如,对于5月27日的一个客户(123),我们的余额为1000,而在5月31日,该客户进行了一笔交易,因此余额变为350。在5月28日至5月30日之间没有余额与5月27日。我希望这些天数据也存在(保留相同的余额并增加日期),其余几天必须保留相同的记录,直到交易完成的余额发生变化为止。如何在Teradata中

  • 问题内容: 请告诉我如何获取特定行的列值= 123的列名。 问题答案: 结果