将逗号分隔的字符串转换为列表

Neh*_*eha 6 sql vertica

我想传递一个int(逗号分隔)列表,这是我表中的一个字段

即.1234,2345,356,4567

我的IN条款WHERE.但是列表是一个字符串(VARCHAR),我正在比较一个int字段.有没有办法让我将列表转换为整数列表?

Enterprise_IDINT
Path是表中的一个字段,它是一个逗号分隔的字符串

即.1234,2345,356,4567

SELECT *
FROM tbl_Enterprise
WHERE Enterprise_ID IN ( Path )
Run Code Online (Sandbox Code Playgroud)

我的数据库是Vertica.

Abh*_*han 5

您可以在vertica中使用SPLIT_PART函数将逗号分隔列表拆分为行并将它们插入临时表中.使用类似这样的查询来实现您的目标:

SELECT * FROM tbl_Enterprice WHERE Enterprice_ID IN ( Select Enterprice_ID from temp_table )
Run Code Online (Sandbox Code Playgroud)

拆分功能:https: //my.vertica.com/docs/7.1.x/HTML/Content/Authoring/SQLReferenceManual/Functions/String/SPLIT_PART.htm

以下是使用split_part将字符串拆分为行的示例:

dbadmin=> SELECT SPLIT_PART('JIM|TOM|PATRICK|PENG|MARK|BRIAN', '|', row_num) "User Names"
dbadmin->   FROM (SELECT ROW_NUMBER() OVER () AS row_num
dbadmin(>           FROM tables) row_nums
dbadmin->  WHERE SPLIT_PART('JIM|TOM|PATRICK|PENG|MARK|BRIAN', '|', row_num) <> '';
 User Names
------------
 JIM
 TOM
 PATRICK
 PENG
 MARK
 BRIAN
(6 rows)
Run Code Online (Sandbox Code Playgroud)