我正在将数据从一个数据库传输到另一个数据库(升级系统)并快速提问。
在源数据库(当前正在使用的数据库)中,我有一个使用绝对路径存储URL的列。在我的新数据库中,我使用的是相对路径。如何修剪传输路径的绝对部分(我正在使用INSERT INTO),只留下文件名?
谢谢! 千斤顶
答案 0 :(得分:3)
您可以尝试类似
的内容DECLARE @Table TABLE(
Val VARCHAR(50)
)
INSERT INTO @Table SELECT '\\test\tada.xml'
INSERT INTO @Table SELECT 'tada1.xml'
SELECT Val,
CASE WHEN CHARINDEX('\',Val,0) > 0 THEN SUBSTRING(Val,LEN(Val) - (CHARINDEX('\',REVERSE(Val),0) - 1) + 1, CHARINDEX('\',REVERSE(Val),0)) ELSE Val END
FROM @Table
或者你可以在C#中创建一个CLR标量函数,这样可以让你更容易。
查看How to: Create and Run a CLR SQL Server User-Defined Function
答案 1 :(得分:1)
如果每个文件的绝对路径中的字符数相同,则可以使用SUBSTRING。这不是最易维护的解决方案,但对于一次性查询,您应该没问题。
实施例
DECLARE @filename varchar(50)
SET @filename = 'example.com/audiofiles/myaudio.mp3'
INSERT INTO newtable
(file_name)
VALUES
(SUBSTRING(@filename, 24, LEN(@filename) - 23))