定义稍后在 SELECT Teradata 查询中使用的变量

Defining a variable used later in the SELECT Teradata query

提问人:Konrad Lubelski 提问时间:10/5/2023 更新时间:10/5/2023 访问量:56

问:

我在定义一个变量时遇到了问题,我稍后将在 SQL 查询中引用该变量。我在Teradata上做。我有特定的代码,其中给定的列必须包含这些值。

var_1 = ('x1', 'x2', 'x3', etc.)

如何在 Teradata 代码中定义它,以便稍后在 select 查询中引用此变量,例如:

SELECT *
FROM table
WHERE key in var_1

这个变量var_1经常出现在代码中,所以我只想在一个地方定义它。

SQL 变量 Teradata

评论

0赞 jakbar 10/5/2023
如果你在teradata中有像string_split()这样的函数,你可以在IN之后写一个子查询,比如“ SELECT value FROM string_split(@var_1 ',',')”。不过,您必须将var_1声明为字符串。
1赞 Fred 10/5/2023
等效函数是,但不能在 Teradata SQL 中为变量赋值 - 文本替换需要在客户端完成,在这种情况下,不需要函数调用。否则,创建一个 VOLATILE 表并 INSERT 值,然后在 IN (SELECT ...) 子句中引用该表,或者只执行 JOIN。STRTOK_SPLIT_TO_TABLE
1赞 dnoeth 10/5/2023
您可以在会话的 queryband: 中设置变量,然后使用 检索它。要传递多个值,您需要像 Fred 建议的那样将其拆分为行。要多次使用它,您需要将所有内容包装在 CTE 中。SET QUERY_BAND = 'var_1=x1,x2,x3;' UPDATE FOR SESSION VOLATILE;GetQueryBandValueSF(0, 'var_1')

答: 暂无答案