SQL中的转义字符

之前写了篇文章《Oracle转义字符》,说到了Oracle中单引号“’”的转义字符是单引号“’”,那么其他的特殊字符的转义字符又是什么呢,如模糊查询的占位符“%”,“_”等。

经过测试,在Oracle中不能再使用单引号“’”来转义“%”,“_”了,而是用反斜杠“\”,不仅如此,还要声明反斜杠“\”是转义字符。

假设表为tb,字段为col,要在col中查询包含“%”或“_”字符的字段,sql如下:

-- Oracle

select * from tb where col like '%\%%' or col like '%\_%' escape '\'

sql中“escape”表明声明反斜杠“\”为转义字符,紧接在“\”后的“%”就表示“%”符号,而左右两边的“%”表示模糊查询占位符。

注意:“%”,“_”作为占位符只会出现在where之后,如果是select ‘%’ from dual就不用转义了。

而MySQL中也是大同小异,不过MySQL不用写“escape”了,直接使用反斜杠“\”就可以了。

继续阅读

Oracle转义字符

需要更新Oracle数据库中所有表的一个字段“flag”为“I”,语句为:

update table_name set flag = 'I'

“I”作为字符串,所以语句中I需要加上单引号。

由于数据库中有多张表,我不想一条一条的语句写,希望能够通过sql语句直接生成所有的语句,所以写了如下sql:

select 'update ' || table_name || ' set flag = 'I'' || ';' from user_tables

这个时候运行,“报错:ORA-00923: 未找到要求的 FROM 关键字”,报错位置就在’I”的第二个单引号位置,因为单引号配对关系,I不是字符串了,所以就报错了,那么如果要显示一个单引号该怎么做呢?

试了语句:

select ''' from dual

同样也会报错,原来“’”作为一个关键字,如果需要显示“’”,需要使用转义字符,就像java的“\”一样。

而Oracle的转义字符就是单引号“’”,所以sql应该这么写:

select '''' from dual

怎么理解呢?把第二个单引号“’”看成“\”就好了,所以我需要的sql就是:

select 'update ' || table_name || ' set flag = ''I''' || ';' from user_tables

这样就OK啦!

Oracle创建用户和设置表空间

最近又在捣鼓Oracle了,用久了MySQL,Oracle好多东西都给忘了… 又开始慢慢的补,下面是创建用户的命令,为了方便查找,贴到这里来了:

1,创建用户,使用默认的表空间,即SYSTEM.DBF

create user admin identified by root;

2,修改用户的表空间

alter user admin default tablespace oracle_study;

3,查看用户的表空间(当前用户只能查看当前用户的表空间)

select username,default_tablespace from user_users;

4,更改表空间大小

alter database datafile 'C:\PROGRAMS\ORACLEXE\APP\ORACLE\ORADATA\XE\oracle_study.dbf' resize 1024m;

(设置表空间查看Oracle数据库11g快捷版使用教程

5,查看表空间名称和大小

select tablespace_name, round(bytes / 1024 / 1024, 0) tsize from dba_data_files;

同一个表空间里,用户不同,看到的表也不同,貌似相当于MYSQL的两个数据库…不知道理解的对不对,还须研究…

Oracle数据库11g快捷版使用教程(有度娘网盘链接哦~)

最近在学习Oracle数据库,好吧,我承认没有那么高大上,其实就是用Oracle数据库学习SQL……

既然在学习,装备就要齐全的说,Oracle数据库,SQL Deverloper就要安装上噻!

上Oracle官网下载Oracle Database,刚看到下载链接就被吓的不要不要的了……尼玛2.5G是几个意思啊?下载速度再快也要按小时计时了……(后面下载的时候也证实了,下载速度非常稳定的20k左右……半夜速度相对快点……)

Oracle数据库2.5G吓得我不要不要的

Oracle数据库2.5G吓得我不要不要的

继续阅读