MySQL如何仅选择值包含字符串的列
我做了一些搜索,从stackexchange上已经发布的一个问题来看,答案是这是不可能的,但我想问一下。我不知道是否可以形成一个SELECT查询来动态选择mysql SELECT语句结果中将显示哪些列。例如: 假设我有此表的列名Person、ID、电话号码和Alt Number:MySQL如何仅选择值包含字符串的列,mysql,Mysql,我做了一些搜索,从stackexchange上已经发布的一个问题来看,答案是这是不可能的,但我想问一下。我不知道是否可以形成一个SELECT查询来动态选择mysql SELECT语句结果中将显示哪些列。例如: 假设我有此表的列名Person、ID、电话号码和Alt Number: John | 79 | 800-499-0000 | 800-499-5555 我想形成一个SELECT语句,这样它只会下拉字段中字符串“800-499”所在的列。因此,MySQL的理想结果是: 800-499-000
John | 79 | 800-499-0000 | 800-499-5555
我想形成一个SELECT语句,这样它只会下拉字段中字符串“800-499”所在的列。因此,MySQL的理想结果是:
800-499-0000 | 800-499-5555
唯一的问题是,我认为动态选择列是不可能的
感谢您的帮助或确认。您可以尝试以下方式:
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
您可以尝试以下方法:
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
不,结果集中不可能有变量列。我可以问一下你想用它来解决什么问题吗?因为有一个巨大的表,有大量的列,所以访问我需要的字段是一件痛苦的事情。如果能够只获取包含信息子串的列,这样我就不必遍历所有其他列才能找到我想要的列,那会很有帮助。@jcsbrotha:但是如果匹配的列因记录而异呢?@jcsbrotha:您所说的“遍历列”是什么意思?如果此类数据可能存在于同一表的多个列中,则可能需要规范化您的架构。不,在结果集中不可能有变量列。我可以问一下你想用它来解决什么问题吗?因为有一个巨大的表,有大量的列,所以访问我需要的字段是一件痛苦的事情。如果能够只获取包含信息子串的列,这样我就不必遍历所有其他列才能找到我想要的列,那会很有帮助。@jcsbrotha:但是如果匹配的列因记录而异呢?@jcsbrotha:您所说的“遍历列”是什么意思?如果这类数据可能存在于同一个表的多个列中,您可能需要规范化您的模式。这种查询会让DBA大哭。使用像这样的搜索引擎会比使用数据导入处理程序更好。简短回答:。@tadman:较长的回答(来自链接的问题)-当与数据导入处理程序一起使用时。对于OP的问题,这可能是一个可行的解决方案-你想把它作为一个答案添加吗?如果你想弄清楚它是如何应用的,那就全靠你了。这种查询会让DBA大哭。使用像这样的搜索引擎会比使用数据导入处理程序更好。简短回答:。@tadman:较长的回答(来自链接的问题)-当与数据导入处理程序一起使用时。对于OP的问题,这可能是一个可行的解决方案-你想把它作为一个答案添加吗?如果你想弄清楚它是如何应用的,所有的答案都是你的。