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。 –