SQL查询从两个表中查找4个字符和6个字符的值

SQL查询从两个表中查找4个字符和6个字符的值,sql,database,db2,Sql,Database,Db2,下面是我正在使用的两个表以及表中的列: **## Table 1 ##** Grantee Column w/sample data Grantee ---------- CLAT CLATX1 DJSD DJSDX3 ADKS ADKSX5 DKHS 试试下面的SQL: 选择不同的被授权人 来自表1 A 哪里 退出选择1 来自表2 B 其中,子字符串a.被授权人,1,4=B.incat_ID;那么…A.GRANTEE,4=B.Incat_ID在哪里?Artjom B.-谢谢编

下面是我正在使用的两个表以及表中的列:

**## Table 1 ##** Grantee Column w/sample data Grantee ---------- CLAT CLATX1 DJSD DJSDX3 ADKS ADKSX5 DKHS 试试下面的SQL:

选择不同的被授权人 来自表1 A 哪里 退出选择1 来自表2 B
其中,子字符串a.被授权人,1,4=B.incat_ID;那么…A.GRANTEE,4=B.Incat_ID在哪里?Artjom B.-谢谢编辑。mustaccio-感谢您的回复!当我编辑WHERE子句以匹配您拥有的内容时,会得到错误的结果。我得到的返回行不只是4或6个字符。我只想要4个字符的ID和他们相关的6个字符的ID,如果它存在的话。感谢您需要提供更有意义的示例数据,包括例外情况。我的建议将与您现有的样品完美配合。Mustaccio-我更新了更多信息。我希望这有帮助。我能够在两个表中获得匹配的前4个字符位置,但我只希望结果集始终包含4个字符的ID及其关联的6个字符的ID(如果存在)。我不希望返回除4个字符asdf或6个字符asdfxn ID以外的其他值(如果它们与相关的4个字符ID一起存在)。现在,只要前4个字符匹配,我就可以获得值,无论它们可能是多少个字符。我觉得我离得更近了,但仍然无法理解这一点。我只需要ASDF和ASDFXn ID。只返回4或6个字符。这有助于澄清问题吗?如果我使用SubstrA.GRANTEE,1,4=B.INACT_ID子句,我将得到返回的行,这些行不只是像我所要的那样的4和6个字符。如果这有助于澄清的话,我对我原来的帖子重新措辞并添加了一些更新。对不起,有什么困惑。我感谢你的投入!谢谢如果此问题已解决,请将此标记为答案。您提供的查询无法用于我试图检索的内容。我在表1的源数据中未看到CLATX2。为什么会有预期的结果?你能解释一下吗?因为我尝试了类似的数据,我得到了以下结果:CLAT CLATX1 DJSD DJSDX3 ADKS ADKSX5 dkhs对于混淆表示担忧。那是个打字错误。它应该是CLATX1。我更新了。其中存在从temp2 B中选择1,其中子字符串a.GRANTEE,1,4=B.INACT_ID;所以substring函数仍然在限定包含前四个字符的行,以及可能在前四个字符之后的任何其他字符?例如,结果-CLAT CLATX1 CLAT4IDKSAKA CLATSHDFSDHF CLATAHAHAHAHAJAJA **## Table 2 ##** Inact_ID Column w/sample data Inact_ID ---------- CLAT DJSD ADKS DKHS
SELECT DISTINCT A.GRANTEE           
FROM TABLE1 A             
WHERE                      
EXISTS(SELECT 1                     
        FROM TABLE2 B     
        WHERE A.GRANTEE= B.INACT_ID);
These are my results: CLAT DJSD ADKS DKHS (Note - This was done on Postgres, and worked, but I can't get it to run in DB2) Results from Postgres Below:(Desired Results - Both 4 character ID and 6 Character ID if exists) GRANTEE -------- CLAT CLATX1 DJSD DJSDX3 ADKS ADKSX5 DKHS