如何仅从oracle中选择现有值?

如何仅从oracle中选择现有值?,oracle,Oracle,我有一个包含大量列的表。太多了,当我选择*时,我甚至看不到任何值,因为所有的列都填满了屏幕。我想这样做: SELECT * FROM my_table WHERE NAME LIKE '%unique name%' AND <THIS COLUMN> IS NOT NULL 从my_表中选择*,其中名称类似于“%unique NAME%”,且不为空 这可能吗?注意:值不是一列 有很多人问同样的问题,但他们有一些奇怪的扭曲,而实际的问题没有得到回答 我试过: SELECT * FR

我有一个包含大量列的表。太多了,当我
选择*
时,我甚至看不到任何值,因为所有的列都填满了屏幕。我想这样做:

SELECT * FROM my_table WHERE NAME LIKE '%unique name%' AND <THIS COLUMN> IS NOT NULL
从my_表中选择*,其中名称类似于“%unique NAME%”,且不为空
这可能吗?注意:值不是一列

有很多人问同样的问题,但他们有一些奇怪的扭曲,而实际的问题没有得到回答

我试过:

SELECT * FROM my_table WHERE NAME LIKE '%unique name%' AND VALUE NOT NULL
                                                                     *
Invalid relational operator

SELECT * FROM my_table WHERE NAME LIKE '%unique name%' AND VALUE <> ''
                                                           *
'VALUE': invalid identifier

SELECT * FROM my_table WHERE NAME LIKE '%unique name%' AND COLUMN NOT NULL
                                                           *
Missing Expression
从my_表中选择*,其中名称如“%unique NAME%”,值不为NULL
*
无效的关系运算符
从my_表中选择*,其中的名称如“%unique NAME%”和值“”
*
“值”:无效标识符
从my_表中选择*,其中的名称如“%unique NAME%”和列不为NULL
*
缺失表达
奖金问题:

  • 有没有办法强迫Oracle一次只显示一个输出屏幕
  • 在与当前列相关的WHERE子句中是否有要使用的变量?例如:
    其中this.column='1'
    ,它将在其中检查每一列以匹配该表达式
  • 有没有办法恢复您在Oracle中的最后一个命令?(我必须远程进入一个运行Oracle的Linux设备中——这都是命令行——甚至不能复制/粘贴,所以我必须手动键入每个命令,连接不稳定,所以调试这些东西需要非常长的时间)
  • 你试过这个吗

    SELECT * FROM my_table WHERE NAME LIKE '%unique name%' AND value IS NOT NULL;
    

    对于行号:

    SELECT field1, field2, ROW_NUMBER() OVER (PARTITION BY unique_field) R WHERE R=1;
    
    通常在Linux控制台中,您可以使用上下箭头重复最后一句话。

    您试过这个吗

    SELECT * FROM my_table WHERE NAME LIKE '%unique name%' AND value IS NOT NULL;
    

    对于行号:

    SELECT field1, field2, ROW_NUMBER() OVER (PARTITION BY unique_field) R WHERE R=1;
    

    通常,在Linux控制台中,您可以使用上下箭头重复最后一句话。

    如果您试图查找特定记录的所有非空列值,您可以尝试取消激活,前提是要取消激活的所有列都具有相同的数据类型:

     SELECT *
       FROM (select * from my_table where name like '%unique value%')
    UNPIVOT [include nulls] (col_value FOR col_name IN (col1, col2, ..., coln))
    
    在上述代码中,除非包含可选的
    include nulls
    语句,否则将排除空值,并且需要明确列出要取消激活的每一列

    如果它们并非都具有相同的数据类型,则可以使用一个不一定要删除所有空值的变体:

    select * 
      from (select * from my_table where name like '%unique value%')
      unpivot ((str_val, num_val, date_val)
      for col_name in ((cola, col1, date1)
                      ,(colb, col2, date2)
                      ,(colc, col3, date1)));
    
    您可以有一组相当大的列组,虽然这里我只显示了三个,每个主要数据类型一个,在IN列表中,您需要为列组中的每一列列出一个列,尽管您可以重用date_val列所示的列,我在其中使用了date1两次。作为重用现有列的替代方法,可以使用空值的伪列:

    select * 
      from (select t1.*, null dummy from my_table t1 where name like '%unique value%')
      unpivot ((str_val, num_val, date_val)
      for col_name in ((dummy, col1, date1)
                      ,(colb, dummy, date2)
                      ,(colc, col3, dummy)));
    

    如果要查找特定记录的所有非空列值,可以尝试取消IVOT,前提是要取消IVOT的所有列都具有相同的数据类型:

     SELECT *
       FROM (select * from my_table where name like '%unique value%')
    UNPIVOT [include nulls] (col_value FOR col_name IN (col1, col2, ..., coln))
    
    在上述代码中,除非包含可选的
    include nulls
    语句,否则将排除空值,并且需要明确列出要取消激活的每一列

    如果它们并非都具有相同的数据类型,则可以使用一个不一定要删除所有空值的变体:

    select * 
      from (select * from my_table where name like '%unique value%')
      unpivot ((str_val, num_val, date_val)
      for col_name in ((cola, col1, date1)
                      ,(colb, col2, date2)
                      ,(colc, col3, date1)));
    
    您可以有一组相当大的列组,虽然这里我只显示了三个,每个主要数据类型一个,在IN列表中,您需要为列组中的每一列列出一个列,尽管您可以重用date_val列所示的列,我在其中使用了date1两次。作为重用现有列的替代方法,可以使用空值的伪列:

    select * 
      from (select t1.*, null dummy from my_table t1 where name like '%unique value%')
      unpivot ((str_val, num_val, date_val)
      for col_name in ((dummy, col1, date1)
                      ,(colb, dummy, date2)
                      ,(colc, col3, dummy)));
    

    您可以为更频繁的列集创建一些视图..我不太确定我是否理解您要查找的内容。在本例中,
    my_table
    是一个包含列
    name
    和另一列
    value
    的表吗?或者您正在尝试执行以下操作:
    name
    是表中每列的名称,
    value
    是该列中的值?因此,如果我有一个包含数百列的表,我会动态地选择要读取的列,并且只显示其中至少一列具有非空值的行?
    value
    不是列<代码>名称是一列。LIKE表达式中的名称足够唯一,只能返回一行。但是,它返回的列太多,它们填满整个屏幕而不显示任何值。为什么不选择您感兴趣的列而不是所有列:
    select name,myu表中的col1,其中名称“%unique name%”和col1不为NULL
    是否允许您在该数据库上创建过程?您可以创建一个以表名和where条件作为输入参数、迭代表架构的列、对每列执行select,并且
    dbms_output
    -打印列名和值(如果列名和值非空)。附加问题2:不,where子句中没有“当前列”的概念。您可以为更频繁的列集创建一些视图。我不太确定我是否理解您要查找的内容。在本例中,
    my_table
    是一个包含列
    name
    和另一列
    value
    的表吗?或者您正在尝试执行以下操作:
    name
    是表中每列的名称,
    value
    是该列中的值?因此,如果我有一个包含数百列的表,我会动态地选择要读取的列,并且只显示其中至少一列具有非空值的行?
    value
    不是列<代码>名称是一列。LIKE表达式中的名称足够唯一,只能返回一行。但是,它返回的列太多,它们填满整个屏幕而不显示任何值。为什么不选择您感兴趣的列呢