【问题标题】:Displaying data from two different tables with values that are different lengths显示来自具有不同长度值的两个不同表的数据
【发布时间】:2017-10-06 22:03:10
【问题描述】:

我正在尝试编写一条 SQL 语句来显示来自两个不同表(没有公共列)的数据,但唯一的问题是我尝试连接两个表的列的长度不同。一个主要是 3 个字符的长度,另一个是 2 个字符的长度。因此,在两列具有相同长度的值的情况下,它可以在没有 NULL 的情况下输出(例如英国和英国),但在 3:2 的情况下(例如美国和美国)它不会。我正在使用 SQL 开发人员。到目前为止,这是我的想法。

SELECT CUST_NO, CNAME, COUNTRY_ID, COUNTRY_CD, COUNTRY_NAME
FROM CUSTOMERS
RIGHT OUTER JOIN COUNTRIES ON CUSTOMERS.COUNTRY_CD = COUNTRIES.COUNTRY_ID
WHERE COUNTRIES.COUNTRY_ID LIKE '_%_%';

来自客户的样本数据:

CUST_NO: 1053

CNAME: Sportwaren G.m.b.H 3

STATUS: A

CUST_TYPE: SPORTS: Sports Chain

COUNTRY_CD: GER

BRANCH_CD: FRNK

来自国家/地区的样本数据:

COUNTRY_ID: AR

COUNTRY_NAME: ARGENTINA

REGION_ID: 2

【问题讨论】:

  • 你能提供一些示例数据吗?
  • 我无法直接从 SQL 复制/粘贴它,所以我只在两个表中输入了一行以及列名。
  • 好的,在我看来 COUNTRY_ID 应该等于 COUNTRY_CD。如果不是,那么就是数据清理问题
  • COUNTRY_ID 确实等于 COUNTRY_CD,但仅在两行具有相同长度的情况下,因此在显示时,一列中的 USA 和另一列中的 US 会使两行都为空。

标签: sql oracle-sqldeveloper


【解决方案1】:
SELECT cust_no
     , cname
     , country_id
     , country_cd
     , country_name
  FROM customers
       RIGHT OUTER JOIN countries ON SUBSTR (customers.country_cd, 1, 2) = SUBSTR (countries.country_id, 1, 2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2019-10-26
    相关资源
    最近更新 更多