select语句查询字段用双引号什么意思

q88776644 2007-09-11 11:00:51
如select name from users 和select "NAME" from users等同吗,引号里面放大写字母就可以吗?
...全文
1791 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwh103 2011-12-15
  • 打赏
  • 举报
回复
oracle区分大小写,但是会自动转换为大写。
也就是说创建时写的是小写,但是实际的结果是大写,使用双引号可以强制不转换。
SnowMote 2011-12-15
  • 打赏
  • 举报
回复
对头,就是说双引号里的东西会原封不动的显示在展示界面
wang_wuhui 2007-09-12
  • 打赏
  • 举报
回复
雙引號記得是來確定你想要的,比如大小寫和空格之類的..
q88776644 2007-09-11
  • 打赏
  • 举报
回复
我试了下用select "NAME" from users和select name from users的查询结果是一样的,但我们知道用select "name" from users则报错,也就是大小写是存在区别的,不知道这里面有什么规则?
gavinhuanghsc 2007-09-11
  • 打赏
  • 举报
回复
name是oracle关键字
hunter_jr 2007-09-11
  • 打赏
  • 举报
回复
对不起,没有理解楼住的意思..好像说的不是一路事...
hunter_jr 2007-09-11
  • 打赏
  • 举报
回复
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"加上双引号就好了.
和大小写没有关系.
snowy_howe 2007-09-11
  • 打赏
  • 举报
回复
ORACLE会自动将查询中用的不加双引号的name转化为"NAME"来查询。
所以,你使用select name from 和select "NAME" from 是一样的。
snowy_howe 2007-09-11
  • 打赏
  • 举报
回复
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 NUMBER

SQL> 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
------------------------------
name

SQL> select name from a;
select name from a
*
ERROR 位于第 1 行:
ORA-00904: "NAME": 无效的标识符


SQL> select "name" from a;

未选定行

这样我们就限制了字段名必须用小写才能查出数据。
artoksxb 2007-09-11
  • 打赏
  • 举报
回复
oracle中表名,表字段都是大写的

17,137

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧