tôi làm rất nhiều công việc ETL và tôi đang tìm kiếm một chức năng mà tôi có thể sử dụng và qub1n'ssolution công trình rất tốt, ngoại trừ cho các giá trị mà không có một dấu back slash. Dưới đây là một chút tinh chỉnh các giải pháp qub1n rằng sẽ xử lý chuỗi không dấu back slash:
Create FUNCTION fnGetFileName
(
@fullpath nvarchar(260)
)
RETURNS nvarchar(260)
AS
BEGIN
IF(CHARINDEX('\', @fullpath) > 0)
SELECT @fullpath = RIGHT(@fullpath, CHARINDEX('\', REVERSE(@fullpath)) -1)
RETURN @fullpath
END
Samples:
SELECT [dbo].[fnGetFileName]('C:\Test\New Text Document.txt') --> New Text Document.txt
SELECT [dbo].[fnGetFileName]('C:\Test\Text Docs\New Text Document.txt') --> New Text Document.txt
SELECT [dbo].[fnGetFileName]('New Text Document.txt') --> New Text Document.txt
SELECT [dbo].[fnGetFileName]('\SERVER\D$\EXPORTFILES\EXPORT001.csv') --> EXPORT001.csv
Đây là một LINK để SqlFiddle
Nguồn
2015-12-08 17:31:42
Cảm ơn bạn đã phản hồi nhanh. Nó đã làm việc! – Don
Tại sao không chỉ: RIGHT (YOUR_PATH, CHARINDEX ('\', REVERSE (YOUR_PATH)) -1) –
Tôi đã thử nghiệm nó và nó có vẻ đủ. Bất lợi duy nhất là điều này chỉ hoạt động nếu dấu gạch chéo ngược nếu có sẵn trong constrast để Path.GetFileName (đường dẫn) trong NET – qub1n