ВЫБОР только части nvarchar SQL Server 2005 - PullRequest
0 голосов
/ 10 февраля 2010

Я переношу данные из одной базы данных в другую (обновление системы), и у меня есть быстрый вопрос.

В исходной базе данных (той, которая используется в настоящее время) у меня есть столбец, в котором хранятся URL-адреса с использованием абсолютных путей. В моей новой базе данных я использую относительные пути. Как я могу обрезать абсолютную часть путей на передаче (я использую INSERT INTO), оставляя только имя файла?

Спасибо! Jack

Ответы [ 2 ]

3 голосов
/ 10 февраля 2010

Вы можете попробовать что-то вроде

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

В качестве альтернативы вы можете создать скалярную функцию CLR в C #, которая должна сделать это немного легче для вас.

Посмотрите Как: создать и запустить пользовательскую функцию CLR SQL Server

1 голос
/ 10 февраля 2010

Если это одинаковое количество символов в абсолютном пути для каждого файла, вы можете просто использовать SUBSTRING. Это не самое удобное решение, но для одноразового запроса все должно быть в порядке.

Пример.

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

INSERT INTO newtable
(file_name)
VALUES
(SUBSTRING(@filename, 24, LEN(@filename) - 23))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...