分享
三行代码  ›  专栏  ›  技术社区  ›  Venkat525

Oracle:update table where number列在字符串变量中

  •  0
  • Venkat525  · 技术社区  · 1 周前

    我想做的是:

    +----+-------------+  
    | id | data        |  
    +----+-------------+  
    |  1 | max         |  
    |  2 | linda       |  
    |  3 | sam         |  
    |  4 | henry       |  
    +----+-------------+  
    

    神秘查询-类似于:

    UPDATE table SET data = 'jen' where id in (id_str)
    

    结果表:

    +----+-------------+  
    | id | data        |  
    +----+-------------+  
    |  1 | jen         |  
    |  2 | lindaa      |  
    |  3 | jen         |  
    |  4 | jen         |  
    +----+-------------+  
    
    1 回复  |  直到 1 周前
        1
  •  0
  •   GMB    1 周前

    id :id_str ,您可以:

    update mytable 
    set data = 'jen' 
    where ',' || :id_str || ',' like ',%' || id || ',%'
    

    另一种方法是正则表达式函数:

    where regexp_like(:id_str, '(^|,)' || id || '(,|$)')
    

    两种解决方案都有效,但效率相当低下。更好的解决方案是不将serch参数作为正确的值列表而不是CSV字符串传递。