如何解析一个表中的字符串值以与另一个表中的值进行连接

时间:2017-07-12 22:43:19

标签: sql parsing join ssms ssms-2012

我有一个问题,在哪里创建报告,我需要两个表加入,没有任何方式加入。我确实找到了他们可能加入的方式,但这很复杂。

有表A,其中包含一个名为select_criteria的列。以下是它包含的3个值的一些示例:

SELECT DISTINCT SUM(TRANSCRIPTDETAIL.CREDIT_BILLING) FROM SOMETABLE WHERE   ((  STUDENTFINANCIAL.TUITION_EXEMPTION  =   'EMPFT'     )    OR     (   STUDENTFINANCIAL.TUITION_EXEMPTION  =   'EMPPT'     )))   

SELECT DISTINCT SUM(TRANSCRIPTDETAIL.CREDIT_BILLING) FROM SOMETABLE WHERE   (   STUDENTFINANCIAL.TUITION_EXEMPTION  =   'PART50'    )   

在表B中,我有一个名为tuition_exemption的列,其中包含以下值:

EMPFT

EMPPT

PART50

在表A列中整个值的尾端,有学费豁免代码与表B中的值相匹配。

有没有办法使用MSSQL,我可以从select_criteria中的long语句中解析出代码,以便它们完全匹配表B中的代码?这是我想要加入表A和表B的方法,就像我需要做的那样。另一个复杂因素是select_criteria和tuition_exemption值之间存在1:many连接,但tuition_exemption值和select_criteria值之间存在1:1连接。

所以最后,在一个例子中,两个表之间的连接应该打印两次相同的select_criteria值(我在表A的上面列表中引用了第一个值),但在这两个行中,两个不同的tuition_exemption值(EMPFT和EMPPT)。或者在表A示例2的情况下,它将打印一次并与PART50匹配一次。

我被困在这里。我有一个声明成功地获取了我想要的select_criteria值:

SELECT select_criteria
WHERE (
select_criteria LIKE '%EMPFT%' OR
select_criteria LIKE '%EMPPT%' OR
select_criteria LIKE '%PART50%' OR
)

但我需要做的就是这个。当它抓取我想要的select_criteria值时,我想要在此表中的新列中打印它匹配的代码。这些代码是表B中的值,如EMPFT' EMPPT'和' PART50'。这就是为什么我想基本上解析select_criteria中的代码,并将它们打印到表A中的新列。这样,表A和表B有一个值匹配,我写了运行我的报告。我现在还不知道如何在SQL中执行此操作。我在Perl中有点了解,但希望能在SSMS 2012中完成所有这些工作。

感谢您的帮助!

byobob

1 个答案:

答案 0 :(得分:0)

您可以使用任何返回布尔值的表达式作为连接条件。既然LIKE返回一个bool,你应该可以这样做:

str_replace("'", "", $row->user_id)