如select name from users 和select "NAME" from users等同吗,引号里面放大写字母就可以吗?

解决方案 »

  1.   

    sql里有一个重命名的规则如
    select name newname from users 或
    select name as newname from users
    还有对函数重命名等(avg(),count(),sum()...)
    如果新列名有空格或者由sql关键字,sql分析器就会报错.如
    select name as new name from users
    这种情况把"new name"加上双引号就好了.
    和大小写没有关系.
      

  2.   

    我试了下用select "NAME" from users和select name from users的查询结果是一样的,但我们知道用select "name" from users则报错,也就是大小写是存在区别的,不知道这里面有什么规则?
      

  3.   

    oracle中表名,表字段都是大写的
      

  4.   

    oracle表名、字段名一般都是大写的,但ORACLE是大小写不敏感的。
    比如你如果想要查看表中是否有某个字段。
    SQL> desc all_tab_cols;
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ----------------------------
     OWNER                                     NOT NULL VARCHAR2(30)
     TABLE_NAME                                NOT NULL VARCHAR2(30)
     COLUMN_NAME                               NOT NULL VARCHAR2(30)
     DATA_TYPE                                          VARCHAR2(106)
     DATA_TYPE_MOD                                      VARCHAR2(3 CHAR)
     DATA_TYPE_OWNER                                    VARCHAR2(30)
     DATA_LENGTH                               NOT NULL NUMBER
     DATA_PRECISION                                     NUMBER
     DATA_SCALE                                         NUMBER
     NULLABLE                                           VARCHAR2(1 CHAR)
     COLUMN_ID                                          NUMBER
     DEFAULT_LENGTH                                     NUMBER
     DATA_DEFAULT                                       LONG
     NUM_DISTINCT                                       NUMBER
     LOW_VALUE                                          RAW(32)
     HIGH_VALUE                                         RAW(32)
     DENSITY                                            NUMBER
     NUM_NULLS                                          NUMBER
     NUM_BUCKETS                                        NUMBER
     LAST_ANALYZED                                      DATE
     SAMPLE_SIZE                                        NUMBER
     CHARACTER_SET_NAME                                 VARCHAR2(44 CHAR)
     CHAR_COL_DECL_LENGTH                               NUMBER
     GLOBAL_STATS                                       VARCHAR2(3 CHAR)
     USER_STATS                                         VARCHAR2(3 CHAR)
     AVG_COL_LEN                                        NUMBER
     CHAR_LENGTH                                        NUMBER
     CHAR_USED                                          VARCHAR2(1 CHAR)
     V80_FMT_IMAGE                                      VARCHAR2(3 CHAR)
     DATA_UPGRADED                                      VARCHAR2(3 CHAR)
     HIDDEN_COLUMN                                      VARCHAR2(3 CHAR)
     VIRTUAL_COLUMN                                     VARCHAR2(3 CHAR)
     SEGMENT_COLUMN_ID                                  NUMBER
     INTERNAL_COLUMN_ID                        NOT NULL NUMBERSQL> select column_name from all_tab_cols where table_name = 'all_tab_cols' and column_name = 'owner
    ';未选定行SQL> select column_name from all_tab_cols where table_name = 'ALL_TAB_COLS' and column_name = 'OWNER
    ';COLUMN_NAME
    ------------------------------
    OWNER这里查询条件中必须用大写才能查出数据。
    另:NAME非ORACLE关键字。但有时我们就想限制表名或字段名的大小写。
    例如:创建一个带小写字段名的表。SQL> create table a 
      2  ("name" varchar2(10));表已创建。SQL> select column_name from all_tab_cols where table_name = 'A' and column_name = 'NAME';未选定行SQL> select column_name from all_tab_cols where table_name = 'A' and column_name = 'name';COLUMN_NAME
    ------------------------------
    nameSQL> select name from a;
    select name from a
           *
    ERROR 位于第 1 行:
    ORA-00904: "NAME": 无效的标识符
    SQL> select "name" from a;未选定行这样我们就限制了字段名必须用小写才能查出数据。
      

  5.   

    ORACLE会自动将查询中用的不加双引号的name转化为"NAME"来查询。
    所以,你使用select name from 和select "NAME" from 是一样的。
      

  6.   

    oracle区分大小写,但是会自动转换为大写。
    也就是说创建时写的是小写,但是实际的结果是大写,使用双引号可以强制不转换。