2009-08-08 71 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