高分拜求!!mssql2005字符串分割问题!我的数据库有个字段存储了图片的详细地址,这样的:/upload/20120404/abcdefg.jpg我想更改掉此字段只存储图片的文件名,其他的都去掉,变成这样:abcdefg.jpg请问要如何操作啊?SQL语句,小弟不才。 拜求各位高手了!!

解决方案 »

  1.   


    select reverse(left(REVERSE('/upload/20120404/abcdefg.jpg'),
    charindex('/',REVERSE('/upload/20120404/abcdefg.jpg'))-1)) as name
    name
    abcdefg.jpg
      

  2.   

    谢谢TravyLee
     真的可以实现,不过,我如何才可以从字段中读取这个“/upload/20120404/abcdefg.jpg”呢? 因为数据库记录有很多条 我想一次性全部更改过来,可以实现吗?
      

  3.   


    select reverse(left(REVERSE(字段名),
    charindex('/',REVERSE(字段名))-1)) from 表名
      

  4.   

    update 表名 set 字段名=reverse(left(REVERSE(字段名),
    charindex('/',REVERSE(字段名))-1))
      

  5.   

    select *, reverse(substring(reverse(图片字段),0,CHARINDEX('/',reverse(图片字段))))  from csupdate yourtable set 图片字段 = reverse(substring(reverse(图片字段),0,CHARINDEX('/',reverse(图片字段))))  
      

  6.   

    感激啊!!!TravyLee!!你就是神人!!我的偶像啊!!!膜拜!膜拜!膜拜!膜拜!膜拜!再次膜拜!膜拜!膜拜!膜拜!再膜拜!膜拜!膜拜!
      

  7.   

    如果要继续升级下如果我要存储“/upload/20120404/abcdefg.jpg” 中的“20120404”呢? 这个咋写??
      

  8.   

    http://blog.csdn.net/travylee/article/details/7366370--参考
      

  9.   

    declare @s varchar(100)='/upload/20120404/abcdefg.jpg'select RIGHT(@s,CHARINDEX('/',reverse(@s))-1)
    /*
    abcdefg.jpg
    */
      

  10.   

    更新参照UPDATE TableName
    set Col=RIGHT(Col,CHARINDEX('/',reverse(Col)+'/')-1)
    --或UPDATE TableName
    set Col=RIGHT(Col,CHARINDEX('/',reverse(Col))-1)
    where Col like '%/%'
      

  11.   

    谢谢 roy_88还有个问题,如果我要新建一个字段用来存储“/upload/20120404/abcdefg.jpg” 中的“20120404” 也就是第二个, 这个咋写??还望赐教!
      

  12.   


    declare   @str   varchar(100),@str2   varchar(100)
    set   @str= '/upload/20120404/abcdefg.jpg '
    select   @str2=substring(@str,patindex( '%[0-9]% ',@str),len(@str)) --得到以第一个数字开始的字符串
    ,@str2=left(@str2,patindex( '%[^0-9]% ',@str2)-1)--得到第一个非数字开始的位置,并根据此位置删除其及以后的字符
     select @str2 as [date]     --显示结果 
    /*
     date
    20120404
    */
      

  13.   

    declare @s varchar(100)='/upload/20120404/abcdefg.jpg'select SUBSTRING(@s,9,8)--路径固定时
    declare @s varchar(100)='/upload/20120404/abcdefg.jpg'select SUBSTRING(@s,charindex('/2',@s)+1,patindex('%[0-9]/%',@s)-charindex('/2',@s))--路径不固定时
    /*
    20120404
    */把变量改为列名就行了
      

  14.   


    路径中只有日期段为数字时可以这样
    declare @s varchar(100)='/upload/20120404/abcdefg.jpg'select SUBSTRING(@s,charindex('/2',@s)+1,8)--路径不固定时
    /*
    20120404
    */
      

  15.   

    你们两的都对了, 但是有没有办法针对字符写这个啊??  如果这个“20120404”  不是数字  而是“csdnnet” 这样的字符串呢??这个该如何处理。 不好意思。再次请教下。