首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL2008截取解决方法

2012-09-09 
SQL2008截取有三个文件名称:G0858号_归档文件目录.pdfG0858号_中华人民共和国_中央人民政府(2009)16号_对

SQL2008截取
有三个文件名称:
G0858号_归档文件目录.pdf
G0858号_中华人民共和国_中央人民政府(2009)16号_对外贸易会签联系单_2009-5-27.pdf
G0858号_中央人民政府_储备(2009)16号_G0858号地底价表_2009-5-27.pdf

我想截取到“归档文件目录.pdf”,“地登记交易会签联系单”,“G0858号地底价表”这三部分,情歌为大虾给个提示。

[解决办法]
_2009-5-27 这个不好处理。
[解决办法]
用_分割一下,然后用isdate() 判断一下,取扩展名前面的最后一个非时间的字符串。
[解决办法]

SQL code
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'fn_subword')BEGIN    DROP FUNCTION fn_subwordENDGOCREATE FUNCTION fn_subword(@memo VARCHAR(1000))RETURNS VARCHAR(1000)ASBEGINDECLARE @REVERSE VARCHAR(1000)= REVERSE(@memo)DECLARE @Submemo VARCHAR(1000)SET @Submemo = SUBSTRING(@REVERSE,CHARINDEX('.',@REVERSE) + 1,CHARINDEX('_',@REVERSE) - CHARINDEX('.',@REVERSE) - 1)IF ISDATE(REVERSE(@Submemo)) = 1BEGIN    SET @REVERSE = REPLACE(@REVERSE,@Submemo + '_','')    SET @Submemo = SUBSTRING(@REVERSE,CHARINDEX('.',@REVERSE) + 1,CHARINDEX('_',@REVERSE) - CHARINDEX('.',@REVERSE) - 1)ENDRETURN REVERSE(@Submemo)END GODECLARE @Str VARCHAR(1000) = 'G0858号_中华人民共和国_中央人民政府(2009)16号_对外贸易会签联系单_2009-5-27.pdf'SELECT dbo.fn_subword(@Str) 

热点排行