मुझे SQL क्वेरी का उपयोग कर फ़ाइल पथ और फ़ाइल पथ को पूर्ण पथ से पार्स करने की आवश्यकता है।पूर्ण पथ से पार्स फ़ाइल नाम और पथ
ईजी। Fullpath - \ सर्वर \ डी $ \ EXPORTFILES \ EXPORT001.csv
FileName Path
EXPORT001.csv \\SERVER\D$\EXPORTFILES\
मुझे SQL क्वेरी का उपयोग कर फ़ाइल पथ और फ़ाइल पथ को पूर्ण पथ से पार्स करने की आवश्यकता है।पूर्ण पथ से पार्स फ़ाइल नाम और पथ
ईजी। Fullpath - \ सर्वर \ डी $ \ EXPORTFILES \ EXPORT001.csv
FileName Path
EXPORT001.csv \\SERVER\D$\EXPORTFILES\
इस का प्रयोग करें -
DECLARE @full_path VARCHAR(1000)
SET @full_path = '\\SERVER\D$\EXPORTFILES\EXPORT001.csv'
SELECT LEFT(@full_path,LEN(@full_path) - charindex('\',reverse(@full_path),1) + 1) [path],
RIGHT(@full_path, CHARINDEX('\', REVERSE(@full_path)) -1) [file_name]
Declare @filepath Nvarchar(1000)
Set @filepath = 'D:\ABCD\HIJK\MYFILE.TXT'
--Using Left and Right
Select LEFT(@filepath,LEN(@filePath)-CHARINDEX('\',REVERSE(@filepath))+1) Path,
RIGHT(@filepath,CHARINDEX('\',REVERSE(@filepath))-1) FileName
-- Using Substring
Select SUBSTRING(@filepath,1,LEN(@filepath)-CHARINDEX('\',REVERSE(@filepath))+1) Path,
REVERSE(SUBSTRING(REVERSE(@filepath),1,CHARINDEX('\',REVERSE(@filepath))-1)) FileName
यहाँ सबसे आसान तरीका
DECLARE @full_path VARCHAR(1000)
SET @full_path = '\\SERVER\D$\EXPORTFILES\EXPORT001.csv'
SELECT LEFT(@full_path, LEN(@full_path) - CHARINDEX('\', REVERSE(@full_path)) - 1),
RIGHT(@full_path, CHARINDEX('\', REVERSE(@full_path)) - 1)
यहाँ है एक लिंक जहां है किसी ने इस आवश्यकता से संबंधित कई कार्य किए हैं:
उत्तर स्टीफन स्टीगर द्वारा टिप्पणी के आधार पर:
Create FUNCTION GetFileName
(
@fullpath nvarchar(260)
)
RETURNS nvarchar(260)
AS
BEGIN
DECLARE @charIndexResult int
SET @charIndexResult = CHARINDEX('\', REVERSE(@fullpath))
IF @charIndexResult = 0
RETURN NULL
RETURN RIGHT(@fullpath, @charIndexResult -1)
END
GO
टेस्ट कोड:
DECLARE @fn nvarchar(260)
EXEC @fn = dbo.GetFileName 'AppData\goto\image.jpg'
PRINT @fn -- prints image.jpg
EXEC @fn = dbo.GetFileName 'c:\AppData\goto\image.jpg'
PRINT @fn -- prints image.jpg
EXEC @fn = dbo.GetFileName 'image.jpg'
PRINT @fn -- prints NULL
मैं ईटीएल बहुत काम करते हैं और मैं एक समारोह है कि मैं एक वापस स्लेश के बिना इस्तेमाल कर सकते हैं और qub1n'ssolution काम करता है मान को छोड़कर बहुत अच्छा के लिए देख रहा था।
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
नमूने::
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
यहाँ एक LINK
के बजाय 2 फ़ील्ड प्रदान किए हैं, यह समाधान है! ;) – SQueek
SqlFiddle करने का उपयोग करना
देखना आसानREVERSE
है यहाँ qub1n के समाधान का एक छोटा ट्वीक कि तार के बिना बैक स्लैश संभाल लेंगे है
DECLARE @full_path VARCHAR(1000)
SET @full_path = '\\SERVER\D$\EXPORTFILES\EXPORT001.csv'
select REVERSE(LEFT(REVERSE(@full_path),CHARINDEX('\',REVERSE(@full_path))-1)) as [FileName],
replace(@full_path, REVERSE(LEFT(REVERSE(@full_path),CHARINDEX('\',REVERSE(@full_path))-1)),'') as [FilePath]
select
LTRIM(
RTRIM(
REVERSE(
SUBSTRING(
REVERSE(Filename),0,CHARINDEX('\',REVERSE(Filename),0))
)))
from TblFilePath
त्वरित प्रतिक्रिया के लिए धन्यवाद। इसने काम कर दिया! – Don
क्यों न केवल: दाएं (YOUR_PATH, CHARINDEX ('\', रिवर (YOUR_PATH)) -1) –
मैंने इसका परीक्षण किया है और यह पर्याप्त लगता है। एकमात्र नुकसान यह है कि यह केवल तभी काम करता है जब पथ। गेटफाइलनाम (पथ) में .NET – qub1n