--建立一个函数(可编程性》函数》标量值函数) 方便调用
ALTER FUNCTION [dbo].[Fn_GetStrArrayOf]
(
@originalStr VARCHAR(1024), --要分割的字符串
@split VARCHAR(10), --分隔符号
@index INT --取第几个元素
)
RETURNS VARCHAR(1024)
AS
BEGIN
DECLARE @location INT; --定义第一次出现分隔符号的位置
DECLARE @start INT;--定义开始位置
DECLARE @next INT; --定义下一个位置
DECLARE @seed INT; --定义分割符号的长度
SET @originalStr = LTRIM(RTRIM(@originalStr));--去除字符串左右2侧空格
set @originalStr=@originalStr+@split
SET @start = 1;
SET @next = 1;
SET @seed = LEN(@split);
SET @location = CHARINDEX(@split, @originalStr);--第一次出现分隔符号的位置
WHILE @location <> 0
AND @index > @next
BEGIN
SET @start = @location + @seed;
SET @location = CHARINDEX(@split, @originalStr, @start);
SET @next = @next + 1;
END
IF @location = 0
BEGIN
RETURN ''
END
RETURN SUBSTRING(@originalStr, @start, @location -@start)
END
--FilePath --201902\20190214\579e19dd2a944b7d8d3125deed0d8da7_201902140034_15811902130213.jpg
--调用
SELECT dbo.Fn_GetStrArrayOf(FilePath, '\',1) FileName,FilePath FROM Table2
--第三个参数为截图索引位置
--另外一种截图方法
--SQL 截图最后一个字符
SELECT REVERSE(SUBSTRING(REVERSE(FilePath),1,CHARINDEX('_',REVERSE(FilePath)) - 1)) as '截取后的文件名' ,
FilePath
FROM [P2OCS].[dbo].[OCS_OrderState] WHERE DATEDIFF(MONTH,CreateDate,GETDATE())=6
AND StateCode=16 and FilePath is not null
--结果:截取后的文件名 15811902120148.jpg
SELECT dbo.Fn_GetStrArrayOf(FilePath, '/',1) FileName,FilePath FROM Table2