Можно ли иметь два «ТОГДА» утверждения с одним условием? - PullRequest
0 голосов
/ 27 апреля 2020

Например, если бы у меня было условие, которое мне нужно было выполнить, то мне нужно сделать еще одну вещь со значениями столбца, как бы я go сделал это?

    CAST(
    CASE WHEN TRY_CAST(CON_ORDERS_MIN.CONCAT_ITEM AS numeric) = o.ORDER_ID
        THEN NULL
    WHEN CHARINDEX(CAST(o.ORDER_ID AS nvarchar), CON_ORDERS_MIN.CONCAT_ITEM) > 0
    --CONDITION 1
        THEN REPLACE(CON_ORDERS_MIN.CONCAT_ITEM, CAST(o.ORDER_ID AS nvarchar), '')
    --CONDITION 2
        THEN replace(ltrim(rtrim(replace(replace(replace(replace(col, ',', '><'), '<>', ''), '><', ','), ',', ' '))), ' ', ',')
    ELSE CON_ORDERS_MIN.CONCAT_ITEM
    END AS VARCHAR
)AS EXAMPLE

Я спрашивая «когда этот номер найден в этом списке номеров, удалите этот номер и избавьтесь от запятых». Поэтому, когда он найден, замените его ничем и уберите запятые. И я не на самом деле понимаю длинную вложенную вещь замены. На самом деле, мне больно смотреть на это. У кого-нибудь есть лучший способ сделать это?

Пример данных:

ID_TB_SEARCHED     CSV_IDS
1234567            1234567, 8900123, 12349786

Чего я пытаюсь достичь:

ID_TB_SEARCHED     CSV_IDS
1234567            8900123, 12349876

Редактировать: Также я знаю что вторая функция замены неверна. Я просто скопировал его и вставил.

1 Ответ

0 голосов
/ 27 апреля 2020

Наконец-то затонуло то, что я должен просто объединить два га!

replace(ltrim(rtrim(replace(replace(replace(replace(REPLACE(CON_ORDERS_MIN.CONCAT_ITEM, CAST(ord.ORDER_ID AS nvarchar), ''), ',', '><'), '<>', ''), '><', ','), ',', ' '))), ' ', ',')
...