Netezza /SQL ..temp table 创建随机字符

Netezza /SQL ..temp table creation with random characters

我确信有一种非常快速的方法可以做到这一点,但我现在有点困惑

有没有办法 select 一堆字符,例如 ('3232345','224225','234234234','533225') 并将每个字符插入临时 table

我想将它们放入临时 table 并将其与我数据库中的另一个 table 进行比较。我试图从源 excel 文件中导入字符,但似乎我没有这样做的权限;所以我尝试创建临时 table 如下

with tablea as (
Select '3232345','224225','234234234','533225'
From testTable
)
Select * from tablea

我必须使用testTable;因为 Netezza/ Sql 不喜欢没有后续 from 的 select。上面的查询 returns a temp tablea 具有值但都在一行中,我需要以逗号分隔的值在不同的行中;如:

3232345
224225
234234234
533225

and not like  3232345,224225,234234234,533225

注意:我尝试查找 row_number() 函数,但我认为该函数需要已在 table.

中定义的特定列值

如有任何帮助,我们将不胜感激 非常感谢

这是你想要的吗?

with tablea as (
    Select '3232345' as val from testTable union all
    Select '224225' from testTable union all
    Select '234234234' from testTable union all
    Select '533225' from testTable
)
 . . .

INZA 函数中包含一个名为 split_to_rows 的示例 UTDF,它可以满足您的需求。

TESTDB.ADMIN(ADMIN)=>  select t.* from  table(split_to_rows('3232345,224225,234234234,533225', ',')) t;
 POS |    STR
-----+-----------
   1 | 3232345
   2 | 224225
   3 | 234234234
   4 | 533225
(4 rows)

如果安装了 INZA 功能,那么您(或您的管理员)可以像这样将此 UTDF 安装到您的数据库中:

[nz@netezza examples]$ cd /nz/extensions/nz/nzlua/examples
[nz@netezza examples]$ ls split_to_rows.nzl
split_to_rows.nzl
[nz@netezza examples]$ ../bin/nzl -d testdb split_to_rows.nzl

Compiling: split_to_rows.nzl
####################################################################
UdxName      =  split_to_rows
UdxType      =  UDTF
Arguments    =  VARCHAR(ANY),VARCHAR(ANY)
Result       =  TABLE(POS INTEGER,STR VARCHAR(255))
Dependencies =  INZA.INZA.LIBNZLUA_3_2_0
NZUDXCOMPILE OPTIONS: (--replbyval --unfenced --mem 2m --version 2)
CREATE FUNCTION
[nz@netezza examples]$