如何在更新期间使用Like运算符

时间:2016-01-12 15:14:01

标签: sql sql-server sql-server-2008

我有这些类型的docnos(BP / 2016/00344,BP / 2016/00345,BP / 2016/00346)和(CP / 2016/00344,CP / 2016/00345,CP / 2016/00346)

就像我有超过100条记录,现在我的任务是通过一次更新查询将年份改为2015而不是2016年

请帮帮我

3 个答案:

答案 0 :(得分:3)

为什么你需要使用类似的?我认为可能会导致更新不正确的记录。

看来年份总是在4-7位置。如果这是真的,使用字符串函数这个任务变得非常简单。

我建议使用以下方法而不是使用替换功能,因为您的字符串00345中的尾随数字可能会达到2015年,而且我不认为您想要替换它们。

所以 UNTESTED:

update table 
set docnos = left(Docnos,3)+'2016'+right(Docnos,len(docnos)-7)
where substring(docnos,4,4) = '2015'
  • 为什么减7? (3为ZZ /,4年为7年)
  • 为什么要使用 where子句?因为你表示你只想更新 2015年记录。

假设。

  1. 前3个位置将始终采用ZZ/格式,其中zz可以是任意2个值
  2. 职位4-7是您需要评估的年份
  3. 现在,如果你必须使用类似......

    我想 我们可以改变我们在哪里where docNo like '%/2015/%'

答案 1 :(得分:3)

UPDATE Table
SET docnos = REPLACE(docnos,'/2015/','/2016/')

这应该也可以。

另外,像xQbert所说,如果LIKE必须使用,你可以添加where docnos like '%/2015/%'

答案 2 :(得分:3)

这是对xQbert方法的详细阐述。假设年份总是从第4个字符开始,那么你可以这样做:

update t
    set docno = stuff(docno, 7, 1, '6')
    where docno like '__/2015/%';
相关问题