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]$
我确信有一种非常快速的方法可以做到这一点,但我现在有点困惑
有没有办法 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]$