2009-08-08 106 views
0

如果我有這樣的替換字符串的一部分在MySQL

表在我的MySQL數據:

數據(文本)

富(HAL)

富(戴維) (dave)

bar(dave)

酒吧(戴維)

,我想做到這一點查詢

SELECT DISTINCT(data) FROM table; 

現在,這將返回表上面列出。但我想要做的是排序的一些替換,使我回查詢應該是這樣的

SELECT DISTINCT(data) FROM table Replace(data, "(xxxx)", ""); 

因此該查詢返回

顯然數據不會被替換,因爲括號很重要,它只是替換爲查詢

如果可以做到這一點是有性能保險絲在這

+0

你可以發佈你的表模式,也許一些樣本數據,所以我們有一個更好的瞭解你正在嘗試做的。另外,它聽起來像你發佈的內容,你可能會更喜歡LIKE查詢。 REPLACE肯定會影響性能 – Mark 2009-08-08 17:55:23

+0

如上所示。表名是'table',它有一列'data'其中字段顯示在上面 – 2009-08-08 18:02:45

回答

2
SELECT DISTINCT stuff 
FROM (
    SELECT RTRIM(SUBSTR(data, 1, LOCATE('(', data) - 1)) AS stuff 
    FROM foo 
) t; 
+0

我將測試它並接受如果正確:D – 2009-08-08 18:03:51

+0

RTRIM是可選的。它從數據中去除尾隨空格。 – hobodave 2009-08-08 18:07:03

+0

LOCATE('(',data) - 1)我對此有些疑問 – 2009-08-08 18:08:12

1

這對我工作的上述問題。謝謝hobodave,你也把我正確的方向

SELECT DISTINCT(SUBSTRING_INDEX(data, '(', 1)) AS tag FROM table