2013-04-25 91 views
1

我做了一些搜索,并且已经发布在stackexchange上的一个问题,答案是这是不可能的,但我想要问。我不知道是否有可能形成SELECT查询来动态选择将在mysql SELECT语句结果中显示的列。例如:MySQL如何只选择其中包含字符串的列

说我有列名的人,ID,电话号码,Alt键Number此表:

John | 79 | 800-499-0000 | 800-499-5555

我想形成一个SELECT语句,以便它只会下拉列其中字符串'800-499'在该领域的某处。因此,从MySQL结果理想是:

800-499-0000 | 800-499-5555

唯一的问题是,我不认为动态选择列是可能的。

任何帮助或确认表示赞赏。

+1

不,这不是可能有一个结果变量列。请问你想用它解决什么问题? – Quassnoi 2013-04-25 16:34:08

+0

好吧,有一个巨大的表,有很多列,所以到我需要的领域是一种痛苦。能够仅获取携带信息子字段的列将会很有帮助,因此我不必遍历所有其他列来找到我想要的列。 – jcsbrotha 2013-04-25 16:36:40

+1

@jcsbrotha:但是如果匹配列与要记录的记录不同? – eggyal 2013-04-25 16:37:10

回答

1

可以尝试类似:

select * from 
(select concat(case when col1 like '%800-499-0000%' then concat('col1: ',col1,';') end, 
       case when col2 like '%800-499-0000%' then concat('col2: ',col1,';') end, 
... 
       case when coln like '%800-499-0000%' then concat('coln: ',coln,';') end) 
     as search_results 
from my_table) sq 
where search_results is not null 
+0

这是使DBA哭泣的那种查询。使用像[Solr](http://lucene.apache.org/solr/)这样的搜索引擎可以更好地衡量kabillion时间。 – tadman 2013-04-25 16:45:13

+0

@tadman:Solr可以用来对付MySQL数据库吗? – 2013-04-25 16:47:42

+0

简短回答:[是](http://stackoverflow.com/questions/4604393/using-solr-with-mysql)。 – tadman 2013-04-25 16:49:58

相关问题