【问题标题】:Removing a combination of strings from a column从列中删除字符串组合
【发布时间】:2013-06-11 13:52:52
【问题描述】:

我今天早些时候曾问过一个类似的问题,但我意识到我的逻辑存在一些缺陷,因为我做了一些假设。

我想要做的是消除字符串中出现的某些单词...为了方便起见,我创建了一个包含一些示例的表格

create TABLE #BrokerNameT (BrokerName varchar(100))

INSERT INTO #BrokerNameT (BrokerName)
VALUES ('Morgan Stanley Co Cash'),
       ('Citi Group Algo Cash'),
       ('JP Morgan Algo'), ('JP Morgan Cash')


SELECT 
   CASE WHEN BrokerName LIKE '%CASH%' 
          THEN RTRIM(LTRIM(SUBSTRING(BrokerName, 1, CHARINDEX('Cash', BrokerName)-1)))
        WHEN BrokerName LIKE '%ALGO%' 
          THEN RTRIM(LTRIM(SUBSTRING(BrokerName, 1, CHARINDEX('algo', BrokerName)-1)))
        WHEN BrokerName LIKE '%Prog%' 
          THEN RTRIM(LTRIM(SUBSTRING(BrokerName, 1, CHARINDEX('prog', BrokerName)-1)))
        WHEN BrokerName LIKE '%BSE%' 
          THEN RTRIM(LTRIM(SUBSTRING(BrokerName, 1, CHARINDEX('bse', BrokerName)-1)))
        WHEN BrokerName LIKE '%FX%' 
          THEN RTRIM(LTRIM(SUBSTRING(BrokerName, 1, CHARINDEX('fx', BrokerName)-1)))
        WHEN BrokerName LIKE '%OTC%' 
          THEN RTRIM(LTRIM(SUBSTRING(BrokerName, 1, CHARINDEX('otc', BrokerName)-1)))
        ELSE '' 
    END
FROM #BrokerNameT

drop table #BrokerNameT

如您所见,有一个我不想在我的专栏中显示的单词列表。这个查询逻辑的问题是,如果它有两个单词是不允许的:让我们说 'Citi Group Algo Cash' ;它会在找到 CASH 并仍然保持“算法”时读取 CASE 逻辑——如果你运行该查询,你会明白我的意思......

有什么想法吗?

【问题讨论】:

    标签: sql sql-server string logic


    【解决方案1】:

    你试过了吗:

    create TABLE #BrokerNameT (BrokerName varchar(100))
    INSERT INTO #BrokerNameT (BrokerName) VALUES('Morgan Stanley Co Cash')
    INSERT INTO #BrokerNameT (BrokerName) VALUES('Citi Group Algo Cash')
    INSERT INTO #BrokerNameT (BrokerName) VALUES('JP Morgan Algo')
    INSERT INTO #BrokerNameT (BrokerName) VALUES('JP Morgan Cash')
    
    select
             replace(replace(replace(replace(replace(replace(BrokerName,'CASH',''),'ALGO',''),'Prog',''),'bse',''),'FX',''),'OTC','')
    from #BrokerNameT
    
    drop table #BrokerNameT
    

    为您不想包含的每个单词添加一个新的替换。

    【讨论】:

    • 我想知道这样做是否会出现性能问题。我很可能也会出现问题......
    • 我没有遇到过这个问题,但这完全取决于您的记录集的大小。从我理解的问题来看,它似乎确实给出了您正在寻找的确切结果。任何像这样的字符串函数都有性能成本。
    • 嵌套替换速度惊人。
    • 是的,我从来没有遇到过嵌套替换的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 2021-06-24
    • 2011-04-20
    • 1970-01-01
    相关资源
    最近更新 更多