cFilePath 字段中有如下值
lcz\0821\194712_01.jpg
lcz\0821\194712_06.jpg
.....................
现在要以这个字段的值去修改 flag 字段的值,cFilePath 字段满足条件 lcz\0821\194712,即“_”前内容相同时环境SQL Server 2000

解决方案 »

  1.   

    cFilePath like 'lcz\0821\194712%'
      

  2.   

    update tb set flag = left(cFilePath , charindex('-',cFilePath) - 1) where charindex('-',cFilePath) > 0
      

  3.   

    update tb set flag=right(col,charindex('_',reverse(col))-1)
      

  4.   

    create table tb(cFilePath varchar(30),flag varchar(30))
    insert into tb values('lcz\0821\194712_01.jpg',null)
    insert into tb values('lcz\0821\194712_06.jpg',null)
    goupdate tb set flag = left(cFilePath , charindex('_',cFilePath) - 1) where charindex('_',cFilePath) > 0 
     
    select * from tbdrop table tb/*
    cFilePath                      flag                           
    ------------------------------ ------------------------------ 
    lcz\0821\194712_01.jpg         lcz\0821\194712
    lcz\0821\194712_06.jpg         lcz\0821\194712(所影响的行数为 2 行)
    */
      

  5.   

    update tb set flag=right(col,charindex('_',reverse(col))-1)
      

  6.   

    update tb set flag = SubString(cFilePath,1,charindex('-',cFilePath)) 
      

  7.   

    --------------------------------------------------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2010-04-30 11:49:29
    --  Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
    --          Jul  9 2008 14:43:34 
    --          Copyright (c) 1988-2008 Microsoft Corporation
    --          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
    --  Blog   : http://blog.csdn.net/htl258
    --------------------------------------------------------------------------
    --> 生成测试数据表:tbIF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb](col varchar(30),flag varchar(10))
    INSERT [tb]
    SELECT 'lcz\0821\194712_01.jpg',null union all
    SELECT 'lcz\0821\194712_06.jpg',nullGOupdate tb set flag=right(col,charindex('_',reverse(col))-1)SELECT * FROM [tb]
    /*
    col                            flag
    ------------------------------ ----------
    lcz\0821\194712_01.jpg         01.jpg
    lcz\0821\194712_06.jpg         06.jpg(2 行受影响)
    */
      

  8.   

    --------------------------------------------------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2010-04-30 11:49:29
    --  Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
    --          Jul  9 2008 14:43:34 
    --          Copyright (c) 1988-2008 Microsoft Corporation
    --          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
    --  Blog   : http://blog.csdn.net/htl258
    --------------------------------------------------------------------------
    --> 生成测试数据表:tbIF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb](col varchar(30),flag varchar(30))
    INSERT [tb]
    SELECT 'lcz\0821\194712_01.jpg',null union all
    SELECT 'lcz\0821\194712_06.jpg',nullGOupdate tb set flag=left(col,charindex('_',col)-1)SELECT * FROM [tb]
    /*
    col                            flag
    ------------------------------ ------------------------------
    lcz\0821\194712_01.jpg         lcz\0821\194712
    lcz\0821\194712_06.jpg         lcz\0821\194712(2 行受影响)
    */还是要这个结果,自己选吧
      

  9.   

    弱弱的问一句 lcz  代表啥意思 我看着怎么这么眼熟呢
      

  10.   

    update tb set flag=left(col,charindex('_',col)-1)
      

  11.   

    多谢各位高手出手
    我试了一下,还是更新不了
    我的意思是原来flag字段的值为 0,现在根据cFilePath 更新flag字段的值,条件和上面一样
    update tb set flag = 1 where cFilePath like 'lcz\0821\194712%'
    是不是应该这样写 ?
      

  12.   

    你的sql语句意思是如果cFilePath的值以'lcz\0821\194712开头的则flag = 1 不知你想要什么样的