2013-05-28 36 views
1

我有以下數據在SQL數據庫提取所需的數據

Path 
------------ 
Mb\Dbi\Abc 
Mb\Dbi\Abc\123 
Mb\Dbi\Dks 
Mb\Dbi\Abc\Hig 
Mb\Dbi\Abc\123\Xyz 
Mb\Dbi\Abc 
Mb\Dbi\Abc\Hig 
Mb\Dbi\Abc\123 
Mb\Dbi\Hig 
Mb\Dbi\Dks\67H 

我想在下面的格式來提取上述數據,這裏的「MB \ DBI」保持不變,需要提取不同之後的名稱,也需要它們的確切值路徑。

Sr.  Name   Value 
1  Abc   Mb\Dbi\Abc 
2  Abc\123  Mb\Dbi\Abc\123 
3  Dks   Mb\Dbi\Dks 
4  Abc\Hig  Mb\Dbi\Abc\Hig 
5  Abc\123\Xyz Mb\DbiAbc\123\Xyz 
6  Dks\67H  Mb\Dbi\Dks\67H 

什麼是查詢/存儲過程/函數來完成這個?

感謝

回答

1

如果您還想要生成的序列號:

SELECT (ROW_NUMBER() OVER (ORDER BY [Path])) AS [Sr.] 
     ,REPLACE ([Path],'Mb\Dbi','')   AS [Name]} 
     ,[Path]         AS [Value]} 
FROM tbl_PathValues 

或者,您可以將具有預定義列的目標表作爲標識列。

+0

感謝您的解決方案。 – usr021986

0

試着這麼做:

SELECT RIGHT(Value, (SELECT LENGTH(Value) - 6)) 
0

嘗試財產以後這樣的,

SELECT RIGHT(DB.Path,SELECT LENGTH(DB.Path) - 6) AS 'Name', DB.Path AS 'Value' FROM DB; 
2

您還沒有指定您所使用的數據庫服務器。

無論哪種方式,您都需要搜索替換函數。

在SQL Server中,功能替代,你可以在這裏找到的定義:http://msdn.microsoft.com/es-es/library/ms186862(v=sql.105).aspx

您的查詢將看起來像這樣在SQL Server:

Select replace(subquery.path,'Mb\Dbi','') AS Name, subquery.path as Value from (Select distinct path from {yourtable}) subquery 

問候

+0

感謝您的解決方案。它工作完美。此外,我已經提到數據庫作爲問題標題本身的SQL。 – usr021986

0

您需要通過轉義'\'將數據插入數據庫。另外下面的查詢將解決你的問題:

解決方案是MySQL

SELECT @rownum := @rownum + 1 AS 'Sr.',SUBSTRING(path, 8) AS `name`, path AS VALUE FROM test_path, (SELECT @rownum := 0) r; 

希望它可以幫助...

相關問題