0
我想能够在CTE定义的输入参数,然后REGEXP_SPLIT_TO_TABLE函数内使用,像这样:Teradata的REGEXP_SPLIT_TO_TABLE输入参数
WITH PARAMS (INPUT_PARAMS) AS
(SELECT
'?InputParams' AS INPUT_PARAMS
)
SELECT
TEST_TABLE.SPLIT_PARAMS
FROM
TABLE (REGEXP_SPLIT_TO_TABLE(1, PARAMS.INPUT_PARAMS, '\|', 'i')
RETURNS (outkey INTEGER, TOKENNUM INTEGER, SPLIT_PARAMS VARCHAR(8192) CHARACTER SET UNICODE)) AS TEST_TABLE
CROSS JOIN PARAMS
然而,这产生以下错误:
SELECT Failed. [3706] Syntax error: Joined table is not supported in conjuction with table operators or table function invoked with variable input argument.
把参数就在功能的工作原理,如下图所示:
SELECT
TEST_TABLE.SPLIT_PARAMS
FROM
TABLE (REGEXP_SPLIT_TO_TABLE(1, '?InputParams', '\|', 'i') --
RETURNS (outkey INTEGER, TOKENNUM INTEGER, SPLIT_PARAMS VARCHAR(8192) CHARACTER SET UNICODE)) AS TEST_TABLE
但我想知道是否有办法做更像上面的第一个例子。
答案#3很好。我以为我应该改用STROK,但这意味着试图使用TD文档,所以我放弃了一段时间后:)。最有用的和意想不到的部分是“实际上你根本不需要加入。”这意味着我可以将未加入的分割放入我的CTE中,然后在我的真实代码中将WITH加入其他表中。一个问题:为什么不需要连接?这似乎是因为我指的是需要加入到TABLE函数中的PARAMS。不是我在抱怨...再次感谢! –
@DougGlancy:不要问我为什么语法是这样的(文档非常糟糕)。这是一种相关联接,与标准SQL的*横向联接*类似。 – dnoeth
嗯,我只是很高兴它的工作原理,我们有你补充文件。再次感谢Dieter。 –