从输出返回部分文本,从另一个查询中删除文本

时间:2019-05-04 06:12:37

标签: tsql partial

我需要返回一些数据,其中包含我需要的值以及其他值。我该如何检索数据(不包括其他地方没有的不需要的值)?

或者如果不可能,那么需要删除的值的变化是从5种可能性中得出的,因此我可以“替换”任何5种情况吗?

例如:

    TABLE1

    ID    ITEM
    -------------------------
    1     AAA:CAR
    2     BBB:PLANE
    3     AAA:BIKE
    4     BBB:TRAIN
    5     CCC:BUS

我认为以下内容将从结果中删除AAA:

    SELECT ITEM REPLACE(ITEM, 'AAA:', '')
    FROM TABLE1

假设这将返回

    ITEM
    ----------
    CAR
    BBB:PLANE
    BIKE
    BBB:TRAIN
    CCC:BUS

但是我想用''替换AAA:和BBB:和CCC :,其中AAA:或BBB:或CCC:存在于其他地方,例如:

    TABLE2

    ID    THING
    -----------------
    1     AAA:
    2     BBB:
    3     CCC:
    4     DDD:
    5     EEE:

例如:

SELECT ITEM REPLACE(ITEM, '/* where THING ID exists in TABLE2 BETWEEN 1 and 5 */', '')
FROM TABLE1

或者,如果无法做到,请说明可能存在的任何替换版本:

SELECT ITEM REPLACE(ITEM, '/* AAA: or BBB: or CCC: or DDD: or EEE: */', '')
FROM TABLE1

对此SQL newby的任何帮助,将不胜感激!

1 个答案:

答案 0 :(得分:0)

查看此查询(sqlfiddle: online query):

select t1.ID, ISNULL(REPLACE(t1.Item, t2.Thing, ''), t1.Item) AS THING
from table1 t1
left outer join table2 t2 on (CHARINDEX(t2.Thing, t1.Item) != 0);