Sql 从另一列删除匹配字符串
我在SQL Server 2014工作。我在一个名为Sql 从另一列删除匹配字符串,sql,sql-server,string,tsql,pattern-matching,Sql,Sql Server,String,Tsql,Pattern Matching,我在SQL Server 2014工作。我在一个名为库名和地址的表中有两列。下面是我在此表中的示例数据 Gallery Name Address -------------------------------------------------------------- Boltelang Boltelang street 12, Paris BERG Contemporary BERG Contemporary gorge ave, Ne
库名
和地址
的表中有两列。下面是我在此表中的示例数据
Gallery Name Address
--------------------------------------------------------------
Boltelang Boltelang street 12, Paris
BERG Contemporary BERG Contemporary gorge ave, New York
像这样,我一共有207张唱片。现在的问题是,Gallery Name
列的数据在address列中重复,我想从address列中删除该列。所以在中国应该是这样的
Gallery Name Adress
--------------------------------------------
Bltelang street 12, Paris
BERG Contemporary gorge ave, New York
我不知道我可以在SQL Server中使用哪个函数来实现这一点对您的查询的回答是使用
REPLACE
,如下所示
UPDATE TABLE_NAME
SET [Address] = REPLACE([Address], [Gallery Name],'')
UPDATE T SET [Address]=
LTRIM(STUFF([Address], CHARINDEX([Gallery Name], [Address]), LEN([Gallery Name]), ''))
from TABLE_NAME T
WHERE [Address] LIKE [Gallery Name] +'%'
注意:在上述查询中,REPLACE
将替换[Address]中出现的所有[Gallery Name]
可以有一个场景,你需要替换<强> >只有第一个出现,而不是在中间某个地方存在。在这种情况下,你可以尝试如下
UPDATE TABLE_NAME
SET [Address] = REPLACE([Address], [Gallery Name],'')
UPDATE T SET [Address]=
LTRIM(STUFF([Address], CHARINDEX([Gallery Name], [Address]), LEN([Gallery Name]), ''))
from TABLE_NAME T
WHERE [Address] LIKE [Gallery Name] +'%'
假设只有当“画廊名称”位于“地址”的开头时才需要它 更正表中的地址
UPDATE [YourTable]
SET [Address] = LTRIM(REPLACE([Address], [Gallery Name],''))
WHERE [Address] LIKE CONCAT([Gallery Name],'%')
我会选择:
update t
set address = stuff(address, 1, len(gallery_name) + 1, '')
where address like gallery_name + ' %';
这些包括您问题中的示例,其中库名位于地址的开头,后跟空格。我在做出这样的改变时非常保守。如果您有另一个模式,那么您可以运行另一个更新来修复这些模式
使用REPLACE()
时要小心,以防地址重复库名:
New York New York 10 New York Ave