分离符字符串SQL语句怎么写? ( 积分: 20 )

  • 主题发起人 主题发起人 Marina
  • 开始时间 开始时间
M

Marina

Unregistered / Unconfirmed
GUEST, unregistred user!
表:tbl1,字段:col1

字段col1内容如下:
C:/OA/archive/20064654648678/965377/465555.doc
C:/OA/archive/608678/9574734/24343/5377/056/66666.doc
请问如何用sql语句取出“465555”、“66666”???

谢谢!
 
这样还叫初级语句啊,够难了。因为不知道前面是几级子目录
一般建议还是做个函数,这样方便些。
以下语句可以在MS SQL里实现,其他的就不知道了
Select REVERSE(
SubString(
REVERSE('C:/OA/archive/20064654648678/965377/465555.doc'),
5,
Charindex('/',
REVERSE('C:/OA/archive/20064654648678/965377/465555.doc')
)
-5
)
)
 
呵呵,我把标题改了,谢谢啊,我先试下效果如何
 
这个对静态目录结构可以,动态目录用不了,而且文件名长度也是动态的
 
没明白,这个就是针对动态目录的啊?
语句的意思我解释一下,因为不知道前面有几级子目录,也即不知道有几个"/",所以用REVERSE()函数把字符串反过来一下,这样的话,碰到的第一个"/"肯定是文件名开始的位置,所以把这之前字符串取到的话,肯定已经包含了文件名与扩展名。
如原文件名是 abc.doc, 得到的是 cod.cba,
你说的动态的不行,问题应该存在于扩展名的取法上, 因为我语句里默认扩展名都是存在,且都是3个字符的,你只需要对这部分进行修整一下就可以了。

下面这个语句取到的是文件名带扩展名的,之于怎么吧扩展名去掉,不用我说了吧?
Select REVERSE(
SubString(
REVERSE('C:/OA/archive/20064654648678/965377/465555.doc'),
1,
Charindex('/',
REVERSE('C:/OA/archive/20064654648678/965377/465555.doc')
) -1
)
)
 
十分感谢,高手就是高手!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
694
import
I
后退
顶部