【问题标题】:SQL Server : how to update with string replaceSQL Server:如何使用字符串替换进行更新
【发布时间】:2017-01-02 09:04:09
【问题描述】:

如何更新某些列:

UPDATE Product
SET Title = REPLACE(Title , 'mn%', 'za%')
WHERE (Title LIKE N'mn%')

假设一列数据为mnfmnd,必须改为zafmnd

【问题讨论】:

  • 总是前两个字符吗?
  • @scsimon 是的,它总是第一个字符
  • 您的查询正在尝试替换 Title 中字符串文字 mn% 的所有实例。我不认为那是你想要的。这似乎是一个使用 STUFF 的好地方
  • @SeanLange 似乎是个不错的建议。
  • @SeanLange 好像不错,我检查了一下

标签: sql sql-server select replace


【解决方案1】:

使用 right 和 + 代替... % 不是替换中的通配符。

UPDATE       Product
SET          Title = 'za'+right(len(title)-2)
WHERE        (Title LIKE N'mn%')

如果你的 SQL Server 版本中没有东西...

【讨论】:

    【解决方案2】:

    按照肖恩的建议尝试使用STUFF

    update Product
    set Title = STUFF(Title,1,2,'za')
    where title like 'mn%'
    

    【讨论】:

    • 谢谢,它有效:),但很抱歉我必须选择一个答案
    【解决方案3】:
    create table #t (title varchar(16))
    insert into #t (title) values ('abcdef'),('defghi')
    
    UPDATE       #t
    SET          title = stuff(Title , 1,2,'za')
    WHERE        (Title LIKE N'ab%')
    
    select * from #t
    

    【讨论】:

    • 谢谢,它有效:),但很抱歉我必须选择一个答案
    【解决方案4】:

    我倾向于为此使用stuff()

    update product
        set title = stuff(title, 1, 2, 'za')
        where title like 'mn%';
    

    【讨论】:

    • 谢谢,它有效:),但很抱歉我必须选择一个答案
    猜你喜欢
    • 2018-01-14
    • 2011-05-20
    • 2010-10-23
    • 2015-10-13
    • 2016-06-23
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    相关资源
    最近更新 更多