我有一张75列的桌子。什么是sql语句只显示值为的列?
感谢
答案 0 :(得分:2)
确实不存在类似的语句(在SELECT
中,您只能为行使用条件过滤器,而不能为列使用条件过滤器)。但你可以尝试写一个(有点棘手的)程序。它必须使用查询检查哪些列包含至少一个不是NULL
/空值的列。当你得到这个列列表时,只需将它们连接到一个字符串中,每个列之间都有一个逗号,然后组成一个可以运行的查询,返回你想要的内容。
编辑:我考虑过这个问题,我认为你可以通过一个程序来实现,但是在以下条件之一:
找到一种在程序中动态检索列名的方法,即元数据(我从来没有听说过,但我是程序新手)
或硬编码所有列名称(失去一般性)
如果DBMS支持数组的存储过程(或者用C语言编写程序),你可以在数组中收集列名,然后在它们上面循环,生成{{1每次,检查它是否为空*列。如果它包含至少一个值,则将其连接到字符串中,其中列名称以逗号分隔。最后,您可以使用非空列进行查询!
除了存储过程之外,您还可以编写一个简短的程序(例如在Java中),您可以在其中处理更好的灵活性。
*如果您检查 SELECT
值会很简单,但如果您检查空值,则需要管理每列数据类型 ...另一个包含数据类型的数组?
答案 1 :(得分:0)
我建议你写一个SELECT
语句并定义你想要显示的COLUMNS
,然后将该QUERY保存为VIEW
。
每次您希望运行该查询时,这将为您省去输入列名称的麻烦。
正如marc_s在评论中指出的那样,没有用于隐藏数据列的select语句。
答案 2 :(得分:0)
您可以进行预解析并动态创建一个语句来执行此操作,但从SQL性能角度来看,这将是一件非常低效的事情。会强烈反对你想要做的事情。
答案 3 :(得分:0)
对此的简化版本是仅选择相关列,这是我个人需要的。快速搜索表中要处理的内容
SELECT * FROM table1 LIMIT 10;
->显示20列,我对其中3列感兴趣。限制只是为了不使控制台溢出。
SELECT column1,column3,colum19 FROM table1 WHERE column3='valueX';
它有点手动过滤器,但是可以满足我的需求。