实质上,该片段在一个较大的 FROM 子句中显示了 2 个 JOINS。
FROM DATA D
JOIN (<subquery>) x(SUPPLIER_CMSID)
USING (SUPPLIER_CMSID)
JOIN (<subquery>) y(NET_SERVICE_NAME)
USING (NET_SERVICE_NAME)
这里需要注意的事项:
USING 是一种 JOIN 语法,通过两侧的同名列隐式连接,例如第一个转换为
ON D.SUPPLIER_CMSID = x.SUPPLIER_CMSID
PostgreSQL 和 SQL Server 允许您在命名派生表中的列的同时为其命名。x(SUPPLIER_CMSID)
将派生表别名为 ,x
同时将其中的单个列别名为SUPPLIER_CMSID
.
其他部分:
- unnest/string_to_array是字符串到数组和数组到行的运算符。结合起来,它可以将分隔字符串转换为多行结果集
- to_number - 将字符串转换为数字。当与 unnest 一起使用时,它将每行的奇异列从字符串转换为数字。但是,您的代码片段缺少格式(第二个参数)
如果整个代码部分有效(不确定是否to_number()
在该上下文中),那么 JOIN 将通过接收两个字符串作为过滤器,p_cmsid
并且p_servicename
大致相当于
FROM DATA D
WHERE SUPPLIER_CMSID = {list in p_cms_id}
AND NET_SERVICE_NAME = {list in p_servicename}
例子
这是一个显示to_number(text,text)
和unnest(array)
一起string_to_array(string, delimiter)
工作的示例:SQL Fiddle
select *
from (select to_number(
unnest(
string_to_array('123,433,434',',')),'999')) tbl(col);