Возврат частичного текста из вывода, удаление текста из другого запроса - PullRequest
0 голосов
/ 04 мая 2019

Мне нужно вернуть некоторые данные, которые содержат значения, которые мне нужны, плюс еще. Как я могу получить данные, исключая ненужные мне значения, которые существуют где-то еще?

Или, если это невозможно, вариации значений, которые необходимо удалить, относятся к 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!

1 Ответ

0 голосов
/ 04 мая 2019

Посмотрите на этот запрос ( sqlfiddle: онлайн-запрос ):

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);
...