2015-01-03 71 views
-1

嗨我沒有在我的SQL列包含網址,但我將不得不修改它只保留第一個MySql在列後刪除;

列名大拇指 數據前。 http://sub.domain.com/t/003/4_b_3.jpg;http://sub.domain.com/t/003/1_b_3.jpg;http://sub.domain.com/t/003/2_b_3.jpg;http://sub.domain.com/t/003/3_b_3.jpg;http://sub.domain.com/t/003/5_b_3.jpg;http://sub.domain.com/t/003/6_b_3.jpg;http://sub.domain.com/t/003/7_b_3.jpg;http://sub.domain.com/t/003/8_b_3.jpg;http://sub.domain.com/t/003/9_b_3.jpg;http://sub.domain.com/t/003/10_b_3.jpg

的結果應該是像http://sub.domain.com/t/003/4_b_3.jpg,沒有別的

誰能幫助我的語法?

在此先感謝

+0

您可以組合2個字符串函數:INSTR()和SUBSTR()。更多信息可以在http://dev.mysql.com/doc/refman/5.0/en/string-functions.html找到。 –

+0

這是一個長串嗎?還是多行?或者是什麼? –

+0

一行中的一個長字符串稱爲table [tablename]中的大拇指,在那裏全部被分隔;並且只能保持行中的第一個值 – Joakim

回答

1

假設(from your comment),其Thumbs是長字符串(它似乎一直在你原來的問題,我認爲可能是不正確的編輯之前),這將在;

第一次出現後,除去一切
update tablename 
set Thumbs = left(Thumbs , instr(Thumbs , ';')-1) 
where instr(Thumbs , ';') > 0; 

Sample SQL Fiddle

+0

感謝很多:)大拇指:) – Joakim

1

使用不操作<>

DELETE FROM [table] WHERE url <> 'http://sub.domain.com/t/003/4_b_3.jpg' 

這將刪除除一個與http://sub.domain.com/t/003/4_b_3.jpg

或通用的所有行:

DELETE FROM [table] WHERE [url] NOT IN (SELECT TOP 1 [url] FROM [table]) 

通用的一個返回表的第一行並免除從刪除中刪除它。

測試並不會後悔使用(MySQL的):

START TRANSACTION; 
    DELETE FROM [table] WHERE url <> 'http://sub.domain.com/t/003/4_b_3.jpg'; 
ROLLBACK TRANSACTION; 

DELETE將被執行,但回滾之後,它工作時,執行不tran

+0

我認爲很明顯,對一個特定的URL進行硬編碼並不是他正在尋找的東西。該解決方案是100%非通用的。他可能只是首先手動輸入該行。 –

+0

謝謝,但給我一個錯誤,當我嘗試使用%的變量 http://%.domain.com/t/%%%/%。jpg /* SQL錯誤(1064):您的SQL語法有錯誤;檢查對應於您的MariaDB服務器版本的手冊,以獲得在'TRAN '附近使用的正確語法DELETE FROM table WHERE url <>'http://%.domain.com/t/%%%/%.jpg' '在第一行*/ – Joakim

+0

@Joakim你正在使用MySQL和'BEGIN TRAN'只在MSSQL上工作,將更新MySQL – Mouser

2

我會建議使用substring_index()

update tablename 
    set Thumbs = substring_index(Thumbs, ';', 1) 
    where thumbs like '%;%'; 

此功能旨在提取分隔字符串的第一部分。