如何获得 return 部分匹配 SQL 中其他列的值?
How can I get return value for partially matching another columns in SQL?
在 plsql 中进行以下查询:
Select b.geo, b.country,a.country
From table_a a
Left join table_b b
On LTRIM(RTRIM(UPPER(b.country))) = LTRIM(RTRIM(UPPER(a.country)))
假设上述查询 return 输出为
- 拉丁美洲哥伦比亚哥伦比亚
- 空空 Colombia_group1
我需要 Colombia_group1 它应该 return LATAM.
您可以使用 LIKE
:
Select b.geo, b.country,a.country
From table_a a
LEFT OUTER JOIN table_b b
ON TRIM(UPPER(a.country)) LIKE TRIM(UPPER(b.country)) || '%'
其中,对于示例数据:
CREATE TABLE table_a ( country ) AS
SELECT 'Colombia' FROM DUAL UNION ALL
SELECT 'Colombia_group1' FROM DUAL;
CREATE TABLE table_b ( country, geo ) AS
SELECT 'Colombia', 'LATAM' FROM DUAL;
输出:
GEO | COUNTRY | COUNTRY
:---- | :------- | :--------------
LATAM | Colombia | Colombia
LATAM | Colombia | Colombia_group1
db<>fiddle here
您可以使用 LIKE
:
Select b.geo, b.country,a.country
From table_a a Left join
table_b b
On TRIM(UPPER(b.country)) like TRIM(UPPER(a.country)) || '%';
请注意,Oracle 有一个 TRIM()
函数,因此不需要下一个 LTRIM()
/RTRIM()
。
在 plsql 中进行以下查询:
Select b.geo, b.country,a.country
From table_a a
Left join table_b b
On LTRIM(RTRIM(UPPER(b.country))) = LTRIM(RTRIM(UPPER(a.country)))
假设上述查询 return 输出为
- 拉丁美洲哥伦比亚哥伦比亚
- 空空 Colombia_group1
我需要 Colombia_group1 它应该 return LATAM.
您可以使用 LIKE
:
Select b.geo, b.country,a.country
From table_a a
LEFT OUTER JOIN table_b b
ON TRIM(UPPER(a.country)) LIKE TRIM(UPPER(b.country)) || '%'
其中,对于示例数据:
CREATE TABLE table_a ( country ) AS
SELECT 'Colombia' FROM DUAL UNION ALL
SELECT 'Colombia_group1' FROM DUAL;
CREATE TABLE table_b ( country, geo ) AS
SELECT 'Colombia', 'LATAM' FROM DUAL;
输出:
GEO | COUNTRY | COUNTRY :---- | :------- | :-------------- LATAM | Colombia | Colombia LATAM | Colombia | Colombia_group1
db<>fiddle here
您可以使用 LIKE
:
Select b.geo, b.country,a.country
From table_a a Left join
table_b b
On TRIM(UPPER(b.country)) like TRIM(UPPER(a.country)) || '%';
请注意,Oracle 有一个 TRIM()
函数,因此不需要下一个 LTRIM()
/RTRIM()
。