2015-04-23 27 views
0

查詢之前更換一個字符串:最後的「」字符在SQL查詢

SELECT filePath FROM Table WHERE filePath IS NOT NULL 

它會返回類似\\server\folder1\folder2\filename.tif

我需要查詢它來代替「\\server\folder1\folder2\」一個變量是在存儲過程中(@Path)並結束文件格式(如.jpg)。

所以結果會是這樣的@Path +名爲.jpg

我怎麼會去這樣做呢?

回答

2

您可以使用字符串函數的組合像REVERSESUBSTRINGLEFTCHARINDEX

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 
+0

親愛的上帝!這是醜陋的哈哈。現在給它一個嘗試。 –

+0

優秀。這個伎倆。謝謝。 –

0

使用的REVERSECHARINDEX組合找到最後\

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))