Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL如何仅选择值包含字符串的列_Mysql - Fatal编程技术网

MySQL如何仅选择值包含字符串的列

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

我做了一些搜索,从stackexchange上已经发布的一个问题来看,答案是这是不可能的,但我想问一下。我不知道是否可以形成一个SELECT查询来动态选择mysql SELECT语句结果中将显示哪些列。例如:

假设我有此表的列名Person、ID、电话号码和Alt Number:

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的问题,这可能是一个可行的解决方案-你想把它作为一个答案添加吗?如果你想弄清楚它是如何应用的,所有的答案都是你的。