2014-09-24 26 views
0

我想更新一個數據庫替換舊字符爲新的,我的問題是,在該字符串的中間我有一些字符,我必須刪除,但我不知道長度或類型,我只知道當子字符串的開始和何時結束,對於〔實施例如何在一個子字符串的中間使用通配符,我不知道它的長度?

my-string=XXXXXXXX-endstring 

所以,我還想讓它這樣

new-string-endstring 

我知道我的字符串值,但不知道在子串中間XXXXX

有沒有辦法做到這一點?

謝謝。

回答

0

如果你使用PHP,你可以做到以下幾點:

1)請有列值內my-string文本

SELECT * FROM table_name WHERE column_name LIKE '%my-string%'

  • %作爲全行的SELECT通配符

2)遍歷全部這些結果行和使用PHP的str_replace更換my-stringnew_string,然後使用MySQL的UPDATE在DB

+0

嗨,謝謝,但我怎麼知道我的字符串和結束字符串之間的字符串?在例子中:XXXX,我不知道長度,我想過使用子字符串,但我不知道如何... – jpganz18 2014-09-25 15:44:57

+0

如果你想過濾出已知字符串之間的文本,看看PHP的'preg_match ()'功能。我不是正則表達式的專家,所以也許其他人可以幫忙嗎? – Philip 2014-09-25 17:19:14

0

您可以使用SUBSTRING_INDEX獲得所需要的字符串,並使用CONCAT追加新的字符串來更新列的新值。

Update TableA 
Set columnA = CONCAT('newstring' , SUBSTRING_INDEX(columnA, '-', -1)) 
+0

但是,例如,在您的示例columnA中要替換的字符串?我想替換columnA(我知道字符串)加上另一個短字符串,它可能是3或4或5位數字,直到我找到「...你有沒有想法如何做到這一點? – jpganz18 2014-09-25 17:43:26

+0

@ jpganz18, columnA有一個像你剛纔提到的XXXXXXXX-endstring的值,我從最後開始搜索並保留每一樣東西,然後連接到它。 – radar 2014-09-25 17:47:21

相關問題