Sql 显示具有不同长度值的两个不同表中的数据
我试图编写一条SQL语句来显示来自两个不同表(没有公共列)的数据,但唯一的问题是,我试图连接两个表的列的长度不同。一个长度主要为3个字符,另一个长度为2个字符。因此,在两列具有相同长度的值的情况下,它可以不带NULL(例如UK和UK)输出,但在3:2(例如USA和US)的情况下则不带NULL。我使用的是SQLDeveloper。这是我到目前为止所知道的Sql 显示具有不同长度值的两个不同表中的数据,sql,oracle-sqldeveloper,Sql,Oracle Sqldeveloper,我试图编写一条SQL语句来显示来自两个不同表(没有公共列)的数据,但唯一的问题是,我试图连接两个表的列的长度不同。一个长度主要为3个字符,另一个长度为2个字符。因此,在两列具有相同长度的值的情况下,它可以不带NULL(例如UK和UK)输出,但在3:2(例如USA和US)的情况下则不带NULL。我使用的是SQLDeveloper。这是我到目前为止所知道的 SELECT CUST_NO, CNAME, COUNTRY_ID, COUNTRY_CD, COUNTRY_NAME FROM CUSTOME
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的内容将在显示时使两行都为空。
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)