我有4个WHEN的案例。前两个适用,但后两个(或我添加的其他任何一个)不适用。所有WHEN都指同一字段。
这就是我想要做的。有问题的字段的格式为:
[Indexname]_[Company]_[Product]_[StartDate$EndDate]
所以看起来像
Retail_Walmart_Stores_Inc_Chair_03012012$05312015
我写的第一个案例是消除日期
CASE WHEN FIELD1 LIKE '%$%' THEN REPLACE(FIELD1,RIGHT(FIELD1,17),'') ELSE FIELD1 END AS NewField
那很好。然后,我想删除索引名称,因此添加了第二个WHEN。那也起作用。但是之后,我们的公司将拥有我们所经营公司的完整法定名称(因此“ Wal-Mart Stores,Inc”或“ The Walt Disney Company”。出于可读性,我希望这些记录只说“ WalMart”或迪士尼。”
我的新代码为
CASE
WHEN FIELD1 LIKE '%$%'
THEN REPLACE(FIELD1,'')
WHEN FIELD LIKE '%RetaIL%'
THEN REPLACE(FIELD1,'RetaIL','')
WHEN FIELD LIKE '%STORES_INC%'
THEN REPLACE(FIELD1,'STORES_INC','')
WHEN FIELD LIKE '%THE_WALT_DIsnEY_COMPANY%'
THEN REPLACE(FIELD1,'THE_WALT_DIsnEY_COMPANY','DIsnEY')
ELSE FIELD1
END AS NewField1
我不明白为什么这在前两个之后会停止工作。起初我以为可能是因为它们都指的是第一列,但是第二个WHEN也不会起作用。
任何人都知道发生了什么事吗?