I had asked a similar question earlier today but realized I had some flaws in my logic since I had made some assumptions.
What I'm trying to do is eliminate certain words from appearing in a string... I've created a table with some examples for ease
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
As you can see, there are a list of words that I do not want to show up in my column. The problem with this query logic is that if it has two words unallowed: Lets say 'Citi Group Algo Cash' ; it will read the CASE logic when it finds CASH and still keep 'algo' -- if you run that query you will see what I mean...
Any ideas?