查詢之前更換一個字符串:最後的「」字符在SQL查詢
SELECT filePath FROM Table WHERE filePath IS NOT NULL
它會返回類似\\server\folder1\folder2\filename.tif
我需要查詢它來代替「\\server\folder1\folder2\
」一個變量是在存儲過程中(@Path
)並結束文件格式(如.jpg)。
所以結果會是這樣的@Path +名爲.jpg
我怎麼會去這樣做呢?
查詢之前更換一個字符串:最後的「」字符在SQL查詢
SELECT filePath FROM Table WHERE filePath IS NOT NULL
它會返回類似\\server\folder1\folder2\filename.tif
我需要查詢它來代替「\\server\folder1\folder2\
」一個變量是在存儲過程中(@Path
)並結束文件格式(如.jpg)。
所以結果會是這樣的@Path +名爲.jpg
我怎麼會去這樣做呢?
您可以使用字符串函數的組合像REVERSE
,SUBSTRING
,LEFT
和CHARINDEX
:
CREATE TABLE YourTable(filePath VARCHAR(2000))
INSERT INTO YourTable VALUES('\\server\folder1\folder2\filename.tif');
DECLARE @path VARCHAR(2000) = 'path\to\folder\'
SELECT
[File] = REVERSE(LEFT(REVERSE(filePath), CHARINDEX('\', REVERSE(filePath),0) - 1)),
[File without ext] =
SUBSTRING(
REVERSE(LEFT(REVERSE(filePath), CHARINDEX('\', REVERSE(filePath), 0) - 1)),
0,
CHARINDEX(
'.',
REVERSE(LEFT(REVERSE(filePath), CHARINDEX('\', REVERSE(filePath), 0) - 1)),
0
)
),
[Final String] =
@path +
SUBSTRING(
REVERSE(LEFT(REVERSE(filePath), CHARINDEX('\', REVERSE(filePath), 0) - 1)),
0,
CHARINDEX(
'.',
REVERSE(LEFT(REVERSE(filePath), CHARINDEX('\', REVERSE(filePath), 0) - 1)),
0
)
) +
'.jpg'
FROM YourTable
使用的REVERSE
和CHARINDEX
組合找到最後\
:
DECLARE @filePath VARCHAR(500) = '\\server\folder1\folder2\filename.tif'
DECLARE @newPath VARCHAR(500) = '\\server2\newpath\'
SELECT @newPath +
SUBSTRING(@filePath, LEN(@filePath) - CHARINDEX('\', REVERSE(@filePath))+2, LEN(@filePath))
親愛的上帝!這是醜陋的哈哈。現在給它一個嘗試。 –
優秀。這個伎倆。謝謝。 –