我正在使用SQL Server2014。在名为Gallery Name
和Address
的表中有2列。下面是该表中的示例数据。
Gallery Name Address
--------------------------------------------------------------
Boltelang Boltelang street 12, Paris
BERG Contemporary BERG Contemporary gorge ave, New York
像这样,我总共有207条记录。现在的问题是,我想从地址列中删除的地址列中的列Gallery Name
的数据正在重复。因此,它应该是这样的在
Gallery Name Adress
--------------------------------------------
Bltelang street 12, Paris
BERG Contemporary gorge ave, New York
我不知道哪个函数我可以在SQL Server使用来实现这一
答案 0 :(得分:1)
查询的答案是使用REPLACE
,如下所示。
UPDATE TABLE_NAME
SET [Address] = REPLACE([Address], [Gallery Name],'')
注意:在以上查询中,REPLACE
将替换[地址]中所有出现的“ [画廊名称]”。
在某些情况下,您只需要替换第一次出现的情况,而不是如果它位于中间位置的话。在这种情况下,您可以尝试执行以下操作。
UPDATE T SET [Address]=
LTRIM(STUFF([Address], CHARINDEX([Gallery Name], [Address]), LEN([Gallery Name]), ''))
from TABLE_NAME T
WHERE [Address] LIKE [Gallery Name] +'%'
答案 1 :(得分:1)
我会去
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
答案 2 :(得分:0)
假定仅当“图库名称”位于“地址”的开头时才需要。
更正表中的地址
UPDATE [YourTable]
SET [Address] = LTRIM(REPLACE([Address], [Gallery Name],''))
WHERE [Address] LIKE CONCAT([Gallery Name],'%')