2015-11-04 169 views
-1

我正試圖刪除第三個/在列中的所有內容。例如:如果在coloumn一個URL如MySQL刪除之前的所有內容/

http://www.example.com/example1/example2?=testest123

我想去掉一切(不包括THRID斜線),所以我會留下這樣的事情

/例1/example2?= testest123

我試過使用這個,但它只是從第一個「/」中刪除了一切,我無法弄清楚如何讓它算到第三個然後刪除。

update table 
     set column2 = substring(column1, instr(column1, '/') + 1); 

謝謝。

+0

這是不是這種情況下的第四個斜線? – AdamMc331

回答

0

這是一個有點亂,但你可以試試這個:

UPDATE table 
SET column2 = SUBSTRING(column1, 
         LOCATE('/', column1, 
          LOCATE('/', column1,       
           LOCATE('/', column1))+1)+1) 
1

要開始,你可以使用SUBSTRING_INDEX函數來獲取字符串的字符導致到第三(或第四斜線,您的例如)是這樣的:

SELECT SUBSTRING_INDEX(val, '/', 4) 
FROM myTable; 

可以使用REPLACE()功能用一個空字符串替換它以消除串,就像這樣:

SELECT REPLACE(val, SUBSTRING_INDEX(val, '/', 4), '') 
FROM myTable; 

現在,爲了更新表格,簡單重寫查詢到的值設置爲高於一個:

UPDATE myTable 
SET val = REPLACE(val, SUBSTRING_INDEX(val, '/', 4), ''); 

注意,如果有少於四次出現一個斜槓,SUBSTRING_INDEX將返回整個字符串,因此完全用空值替換整個字符串,所以在執行此更新時應該非常小心。

下面是一個SQL Fiddle示例,其中包含您的示例文本,以及我用較少的斜槓編寫的示例以說明最後一點。

相關問題