oracle关键字作为字段名使用方法

有时我们在定义字段名及别名时所用名与oracle关键字同名,这时该如何处理呢?
其实很简单,只要在此关键字加上"",如"group"

SQL> DROP TABLE k;
Table dropped
-- 建立表K,字段名为UID(oracle关键字)
SQL> CREATE TABLE k(UID INT);
CREATE TABLE k(UID INT)
ORA-00904: : invalid IDENTIFIER
-- 字段名加""表创建成功
SQL> CREATE TABLE k("UID" INT);
Table created
--插入一些数据
SQL> INSERT INTO k VALUES(1);
1 row inserted
SQL> INSERT INTO k VALUES(2);
1 row inserted
SQL> INSERT INTO k VALUES(3);
1 row inserted
-- 查询时加不加""都正常(似乎不太符合规范)
SQL> SELECT UID FROM k;
UID
----------
5
5
5
SQL> SELECT "UID" FROM k;
UID
---------------------------------------
1
2
3

-- update时必须加上""
SQL> UPDATE k SET UID=5 WHERE UID=3;
UPDATE k SET UID=5 WHERE UID=3
ORA-01747: invalid user.table.column, table.column, or column specification
SQL> UPDATE k SET "UID"=5 WHERE "UID"=3; 

1 row UPDATED
总结:oracle可以在"关键字"的形式引用关键字作为字段名与查询语句的别名。如果不是特殊情况最好不要使用,以免引起代码编写过程中的错误。

时间: 2024-11-01 11:05:12

oracle关键字作为字段名使用方法的相关文章

将oracle关键字作为字段名

对于关键字比如:Level.uid.group等 如果在数据库设计的时候,没有考虑oracle数据库的特殊性时,可能会使用关键字作为字段名,从而在建表的过程中,提示错误:ORA-00904: invalid IDENTIFIER. 解决方法: 1.设计数据库时,尽量不要使用数据库的关键字作为字段名 2.使用双引号("")标记 原文地址:https://www.cnblogs.com/zhuitian/p/11444085.html

获取sqlserver数据库中所有库、表、字段名的方法

1.获取所有数据库名: SELECT Name from Master..SysDatabases ORDER BY Name 2.获取所有表名: SELECT Name from DatabaseName..SysObjects Where XType='U' ORDER BY Name XType='U':表示所有用户表; XType='S':表示所有系统表; 3.获取所有字段名: SELECT Name from SysColumns WHERE id=Object_Id('TableNa

Java 存储和读取 oracle CLOB 类型字段的实用方法

package oracle.clob; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import java.sql.Connection; import java.sql.DriverManager; import java

用关键字做表名和字段时,如何删除

建表时千万要注意,避免使用关键字做表名和字段名. (1)在oracle中如果不小心用关键字做了字段名,在SQL中的使用方法:加上英文双引号,如下: 1 alter table RSFILEINFO drop column "DESC"; oracle中使用了关键字的字段常常不容易删除掉,要删除,使用上述语句.注意:删掉的字段名要大写. (2)在MySQL中如果使用了关键字,在SQL中的使用方法:加上符号·(倒符号,在数字键1的左边)如下: 1 select `desc` from ta

oracle 实现多字段匹配一个关键字查询语句

oracle 实现多字段匹配一个关键字查询语句:有两种方法(经测试,10g中不能用,11g才行): 第一种. select * from table where ('字段名1' ||'字段名2' ||...) like "%keyValue%"; 第二种:(1)如果是两个字段的话:select * from table where concat(字段名1,字段名2) like "%keyValue%";(2)如果是多个字段的话:select * from table

oracle表名、字段名等对象的命名长度限制

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/45854385 今天在为某系统数据库结构整理升级脚本时,遇到了"命名字节过长的错误",类似于下面的截图语句: 由于升级的结构中对于字段名的命名根据业务进行了修改,出现了命名过长的情况. 这里想说一下,对于oracle,表名.字段名等对象命名字节个数限制在

关于oracle sql语句查询时表名和字段名要加双引号的问题

oracle初学者一般会遇到这个问题. 用navicat可视化创建了表,可是就是不能查到! 后来发现②语句可以查询到 ①select * from user; 但是,我们如果给user加上双引号就可以查到了! ②select * from "user"; 难道oracle跟mysql等不同,查询时候一定要加双引号?那这样不是很麻烦!于是经过查找资料得出如下结论: 1.oracle表和字段是有大小写的区别.oracle默认是大写,如果我们用双引号括起来的就区分大小写,如果没有,系统会自动

创建数据库一定要注意字段名不能是关键字!

创建数据库一定要注意字段名不能是关键字! 创建数据库一定要注意字段名不能是关键字!,布布扣,bubuko.com

Oracle中使用游标获取指定数据表的所有字段名对应的字符串

操作步骤:打开PLSQL Developer后,直接执行下面的语句就可以出来 --Oracle中使用游标获取指定数据表的所有字段名对应的字符串 declare mytablename VARCHAR(255):='STAFFDOC'; --定义要查询的数据表名变量,STAFFDOC为我测试用的数据表名,请修改成您的数据库中的对应数据表名字mystring NVARCHAR2(4000):=''; --定义要输出的字符串变量 cursor mycursor is --定义游标          s