我有一臺這樣的柱:每個元素在列PostgreSQL的:檢查是否串是一個字符串,如果爲true,則與子更換整個字符串
| biz_name |
---------------
| www.Dog.com |
| Dog LLC. |
| Dog Inc. |
| www.Cat.com |
| Cat Corp |
而且,我想檢查它是否包含子字符串'Dog'或'Cat',如果是,則用'Dog'或'Cat'替換整個字符串。
結果應該是:
| biz_name |
---------------
| Dog |
| Dog |
| Dog |
| Cat |
| Cat |
有沒有辦法做到這一點不使用情況下則這樣的:
CASE
WHEN biz_name ilike '%Dog%' THEN 'Dog'
WHEN biz_name ilike '%Cat%' THEN 'Cat'
ELSE biz_name END as biz_name
上表只是爲了演示一下一個例子我試圖做,但我正在處理的實際表中有更多的子字符串,我試圖搜索和替換使用多個CASE WHEN語句可能變得乏味。有沒有人有更有效的方式來做到這一點?謝謝。
不管怎樣..地方,所以我覺得你的方法實際上是最簡單的。 你可以避免重複使用regexp_replace代替兩次Dog,並用找到的「令牌」來代替,但我認爲這沒什麼大不了的。 – Dessma
另一個解決方案是更新'update [tableName] set biz_name ='Dog',其中biz_name如'%dog%'' – Andrei
'帶有subs(s)as(values('Dog'),('Cat')) test(biz_name)as(values('www.dog.com'),('www.cat.com'),('dog Inc.'))select * from test left join subs on(test.biz_name〜* subs .s);' – Abelisto