-1

例如,如果我有一个需要满足的条件,那么我需要对列值做另一件事,我将如何去做?

    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

编辑:另外,我知道第二个替换功能不正确。我只是复制并粘贴。

4

1 回答 1

0

终于明白了,我应该把两者结合起来哈!

replace(ltrim(rtrim(replace(replace(replace(replace(REPLACE(CON_ORDERS_MIN.CONCAT_ITEM, CAST(ord.ORDER_ID AS nvarchar), ''), ',', '><'), '<>', ''), '><', ','), ',', ' '))), ' ', ',')
于 2020-04-27T18:45:56.733 回答