Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从另一列删除匹配字符串_Sql_Sql Server_String_Tsql_Pattern Matching - Fatal编程技术网

Sql 从另一列删除匹配字符串

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

我在SQL Server 2014工作。我在一个名为
库名
地址
的表中有两列。下面是我在此表中的示例数据

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