首页 > 解决方案 > SQL查询提取匹配的SQL字符串部分

问题描述

让我们考虑一个CLASSBILL表。

CLASS桌子:

班级 描述
F 工厂
H 总公司
C001 电气
C002 机械的
C003 民事

BILL桌子:

BILL_NO 文档类
1 FC001
2 FC002
3 FC003

描述:Class是一个主键。假设我们通过从CLASS表中标记不同的类来创建发票。

例如,发票 1 是通过标记FCOO1(即工厂和电气)创建的

问题:如何编写 SQL 查询以仅获取Invoice 1 的COO1一部分?FC001

此 SQL 代码不起作用:

Select
    BILLDET.BILL_NO,
    BILLDET.CLASS,
    BILLDET.GLCODE,
    CLASS.DESCRIPT
From
    BILLDET 
Full Join 
    CLASS On BILLDET.CLASS = CLASS.CLASS

输出:

账单号 描述
1 工厂电气

谢谢

标签: sqlsql-server-2008

解决方案


呃,存储数据的方法

WITH classx AS(
  SELECT
    c.class+n.class as class,
    c.descript+n.descript as descript 
  FROM
    class c 
    JOIN class n 
    ON 
      c.class LIKE 'c%' AND 
      n.class NOT LIKE 'c%'
)

SELECT * FROM bill JOIN classx ON bill.docclass = classx.class

推荐阅读