2013-07-25 68 views
0

我有一個表答:如何在選擇中從完整路徑獲取文件名?

Col1 Col2 
1  D:\Akagane2\Source\SubModule\ExtractText.vb 
2  D:\Akagane2\Source\SubModule\ExtractText.vb 

我要選擇輸出表中有數據

Col1 Col2 
1  ExtractText.vb 
2  ExtractText.vb 

選擇PostgreSQL中, 你能幫助我嗎?

+0

在這種情況下..你只能使用一個醜陋的字符串操作。如果您使用* PHP *處理結果(例如),則可以驗證文件是否存在文件..並獲取詳細的路徑/名稱/擴展名。 另外,如果您可以修改第一個表格,最好爲'file_name','extension','file_type'添加額外的列。 –

+0

可能的重複:http://stackoverflow.com/questions/13750846/split-out-file-name-from-path-in-postgres –

回答

3

喜歡的東西

SELECT RIGHT('D:\Akagane2\Source\SubModule\ExtractText.vb', POSITION('\' in REVERSE('D:\Akagane2\Source\SubModule\ExtractText.vb')) -1); 
2

在PostgreSQL上。

mole=> CREATE TABLE A (Col1 INTEGER, Col2 VARCHAR); 
CREATE TABLE 
mole=> INSERT INTO A VALUES (1, 'D:\Akagane2\Source\SubModule\ExtractText.vb'); 
INSERT 0 1 
mole=> INSERT INTO A VALUES (2, 'D:\Akagane2\Source\SubModule\ExtractText.vb'); 
INSERT 0 1 
mole=> SELECT * FROM A; 
col1 |     col2      
------+--------------------------------------------- 
    1 | D:\Akagane2\Source\SubModule\ExtractText.vb 
    2 | D:\Akagane2\Source\SubModule\ExtractText.vb 
(2 rows) 
mole=> SELECT Col1, REGEXP_REPLACE(Col2, '.*\\', '') AS col2 FROM A; 
col1 |  col2  
------+---------------- 
    1 | ExtractText.vb 
    2 | ExtractText.vb 
(2 rows) 
+2

優雅!對於Linux樣式的路徑(路徑分隔符是/不是\\),這可以工作:SELECT Col1,REGEXP_REPLACE(Col2,'。* /','')AS col2 FROM A; – DaveBoltman

+0

正確,但DOS風格路徑的憎惡是他的問題的一部分 –

+0

啊,當然是的 – DaveBoltman

相關問題