选择nvarchar只是SQL Server 2005的一部分

问题描述:

我正在将数据从一个数据库传输到另一个数据库(升级系统)并且有一个快速问题。选择nvarchar只是SQL Server 2005的一部分

在源数据库(当前正在使用的数据库)中,我有一个使用绝对路径存储URL的列。在我的新数据库中,我使用相对路径。如何删除传输路径的绝对部分(我正在使用INSERT INTO),只留下文件名?

谢谢! 杰克

+0

你能举出一些有关数据的例子吗? – 2010-02-10 15:55:50

+0

来源列:'http://www.example.com/audiofiles/myaudio.mp3' 目标栏:'myaudio.mp3' – jchapa 2010-02-10 16:04:45

你可以尝试像

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

+0

谢谢。很好的回答 – jchapa 2010-02-10 16:29:07

如果它在每一个你可以使用SUBSTRING文件的绝对路径相同数目的字符。这不是最易维护的解决方案,但对于一次性查询,您应该可以。

例子。

DECLARE @filename varchar(50) 
SET @filename = 'example.com/audiofiles/myaudio.mp3' 

INSERT INTO newtable 
(file_name) 
VALUES 
(SUBSTRING(@filename, 24, LEN(@filename) - 23)) 
+0

+1。谢谢。我会标记为答案,但@astander更可重复。 – jchapa 2010-02-10 16:30:13