[英]PostgreSQL: Check if substring is in a string and if true then replace the entire string with the substring
我在这样的表中有一列:
| 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呢?
CASE
WHEN biz_name ilike '%Dog%' THEN 'Dog'
WHEN biz_name ilike '%Cat%' THEN 'Cat'
ELSE biz_name END as biz_name
上表仅是一个示例,用来演示我正在尝试做的事情,但是我正在处理的实际表中还有许多我正在尝试搜索的子字符串,并使用多个CASE WHEN语句替换这些子字符串会变得很乏味。 有人有更有效的方法吗? 谢谢。
1)您可以快速插入到临时表吗
--assuming table name is biz
declare @name varchar(max)
declare @TEMP table (Name varchar(max))
-- insert all your values
insert into @TEMP values ('dog')
insert into @TEMP values ('cat')
set @name = select top 1 name from @TEMP
delete from @temp where name = @name -- remove from que /table
WHILE @name IS NOT NULL
BEGIN
update dbo.biz
set biz_name = @name
where biz_name like '%' + @name '%'
set @name = select top 1 name from @TEMP
delete from @TEMP where name = @name
END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.