PLSQL NOTE --------like 与转义字符

SQL> create table test
  2  (id integer,
  3  name varchar2(90));

Table created.

SQL> insert into test values(100,‘aassdd‘);

1 row created.

SQL> insert into test values(120,null);

1 row created.

SQL> insert into test values(110,‘aa_see‘);

1 row created.

SQL> select id from test where name like ‘aa/_%‘ escape ‘/‘;

    ID
----------
       110

SQL> select id from test where name like ‘aa%‘;

    ID
----------
       100
       110

SQL> select id from test where name like ‘aassdd‘;

    ID
----------
       100

SQL> insert into test values(123,‘dfhi&sdklv‘);
Enter value for sdklv: &hkdfj
old   1: insert into test values(123,‘dfhi&sdklv‘)
new   1: insert into test values(123,‘dfhi&hkdfj‘)

1 row created.

注:

PLSQL中默认转义字符是 ‘ ,所以 ’ 字符应表示为 ‘’‘’;

%   零或者多个字符
_    单一任何字符(下划线)
\     特殊字符

escape 用于自定义转义字符。

==================================================================================================================================================================================

oracle10g以上支持正则表达式的函数主要有下面四个:
1,REGEXP_LIKE :与LIKE的功能相似
2,REGEXP_INSTR :与INSTR的功能相似
3,REGEXP_SUBSTR :与SUBSTR的功能相似
4,REGEXP_REPLACE :与REPLACE的功能相似
POSIX 正则表达式由标准的元字符(metacharacters)所构成:
‘^‘ 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。
‘$‘ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹
配 ‘\n‘ 或 ‘\r‘。
‘.‘ 匹配除换行符之外的任何单字符。
‘?‘ 匹配前面的子表达式零次或一次。
‘+‘ 匹配前面的子表达式一次或多次。
‘*‘ 匹配前面的子表达式零次或多次。
‘|‘ 指明两项之间的一个选择。例子‘^([a-z]+|[0-9]+)$‘表示所有小写字母或数字组合成的
字符串。
‘( )‘ 标记一个子表达式的开始和结束位置。
‘[]‘ 标记一个中括号表达式。
‘{m,n}‘ 一个精确地出现次数范围,m=<出现次数<=n,‘{m}‘表示出现m次,‘{m,}‘表示至少
出现m次。
\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。
字符簇:
[[:alpha:]] 任何字母。
[[:digit:]] 任何数字。
[[:alnum:]] 任何字母和数字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大写字母。
[[:lower:]] 任何小写字母。
[[:punct:]] 任何标点符号。
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。
各种操作符的运算优先级
\转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, anymetacharacter 位置和顺序
|
*/

=================================================================================================================================================================

1,%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

比如 SELECT * FROM [user] WHERE u_name LIKE ‘%三%‘

将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE ‘%三%‘ AND u_name LIKE ‘%猫%‘

若使用 SELECT * FROM [user] WHERE u_name LIKE ‘%三%猫%‘
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

2,_: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:

比如 SELECT * FROM [user] WHERE u_name LIKE ‘_三_‘
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

再比如 SELECT * FROM [user] WHERE u_name LIKE ‘三__‘;
只找出“三脚猫”这样name为三个字且第一个字是“三”的;

3. regexp_like 正则表达式函数查询
--查询FieldName中以1开头60结束的记录并且长度是7位
select * from fzq where FieldName like ‘1____60‘;
select * from fzq where regexp_like(FieldName,‘1....60‘);
--查询FieldName中以1开头60结束的记录并且长度是7位并且全部是数字的记录。
--使用like就不是很好实现了。
select * from fzq where regexp_like(FieldName,‘1[0-9]{4}60‘);
-- 也可以这样实现,使用字符集。
select * from fzq where regexp_like(FieldName,‘1[[:digit:]]{4}60‘);
-- 查询FieldName中不是纯数字的记录
select * from fzq where not regexp_like(FieldName,‘^[[:digit:]]+$‘);
-- 查询FieldName中不包含任何数字的记录。
select * from fzq where regexp_like(FieldName,‘^[^[:digit:]]+$‘);
--查询以12或者1b开头的记录.不区分大小写。
select * from fzq where regexp_like(FieldName,‘^1[2b]‘,‘i‘);
--查询以12或者1b开头的记录.区分大小写。
select * from fzq where regexp_like(FieldName,‘^1[2B]‘);
-- 查询数据中包含空白的记录。
select * from fzq where regexp_like(FieldName,‘[[:space:]]‘);
--查询所有包含小写字母或者数字的记录。
select * from fzq where regexp_like(FieldName,‘^([a-z]+|[0-9]+)$‘);
--查询任何包含标点符号的记录。
select * from fzq where regexp_like(FieldName,‘[[:punct:]]‘);

时间: 2024-08-25 03:57:48

PLSQL NOTE --------like 与转义字符的相关文章

PLSQL note

sql%count 最近一次sql执行的件数SUBSTR(string , int i) // i番目から最後までの文字列を切り取るSUBSTR(string , int i, int j) // i番目からj文二の文字列を切り取るNVL(para, string) // paraはnullであれば.string を戻るFLOOR( i) // iより小さく.一番大きい整数を戻るCEIL(i) // iより大きく.一番小さい整数を戻るROUND(i) // 四捨五入TO_CHAR() //sel

【Oracle】Oracle中使用转义字符

1.Oracle 特殊字符 转义 关键词:oracle    转义                                           环境:oracle9i plsql 在plsql里边执行: update userinfo set pageurl='myjsp?page=1&pagesize=10' where id='test' 这条sql语句往数据库的pageurl字段放进去了一个url地址,但是执行的时候却并非那么理想,因为这其中有一个oracle的特殊字符,需要进行转

Report_报表以PLSQL实现HTML标记实现(案例)

2014-05-31 BaoXinjian 一. 摘要 Oracle Report Builder开发的字符模式的报表,成为系统报表 优点 采用图形化的开发方式,比较直观 有功能强大的向导 对比较复杂格式的报表也不要通过太多代码来实现 最终结果以一个独立的文件的形式展示,比较容易传递 缺点 很难转成execel格式文件 虽然有布局编辑器,但是实际编写过程中,其宽度和位置的拖动比较繁琐 通过在数据库中直接产生HTML格式的文件,成为HMTL报表 优点 输出的文件,可以直接另存为execel或者wo

Oracle/PLSQL: LENGTH Function-from cyber

Oracle/PLSQL: LENGTH Function This Oracle tutorial explains how to use the Oracle/PLSQL LENGTH function with syntax and examples. Description The Oracle/PLSQL LENGTH function returns the length of the specified string. Syntax The syntax for the LENGT

[c/c++] programming之路(3)、转义字符及内存

一.转义字符 1 #include<stdio.h> 2 3 void main(){ 4 printf("hello \nworld\a");// \n换行 \a机器响一声 5 getchar();//等待 6 } 1 #include<stdio.h> 2 3 void main(){ 4 //printf("hello world"); 5 putchar('h'); 6 putchar('e'); 7 putchar('l'); 8

plsql 登录后,提示数据库字符集(AL32UTF8)和客户端字符集(ZHS16GBK)不一致,PL/SQL database character set(AL32UTF8) and Client character set(ZHS16GBK) are different

原文网址:http://blog.163.com/magicc_love/blog/static/18585366220123111128283/ 启动PL/SQL Developer 报字符编码不一致错误 Database character set (AL32UTF8) and Client character set (ZHS16GBK) are different.Character set conversion may cause unexpected results. Note: y

设置PLSQL启动自动登录指定数据库

设置PLSQL启动自动登录数据库 在做公司的项目中,有多个测试环境,在deubg问题时经常要连不同的数据库.虽然PLSQL可以保存登录用户名和密码,但是每次选择的时候在一排数据库中选择的时候很容易看花眼,就想有没有什么便捷的方法可以直接登录数据库. 在看PLSQL的帮助文档时,发现33.4有这么一段话: userid Every time you start PL/SQL Developer, it will prompt you for at least the password. To av

383.判断一个字符串是否能够包含另外一个字符串 Ransom Note

Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false. Each letter in the

thinking in java ----reading note (1)

# thinking in java 4th# reading note# victor# 2016.02.10 chapter 1 对象入门 1.1 抽象的进步    (1) 所有东西都是对象.    (2) 程序是一大堆对象的组合,对象间通过消息联系.    (3) 通过封装现有对象,可制作出新型对象.    (4) 每个对象都有一种类型(某个类的实例).    (5) 同一类的所有对象都能接受相同的消息.    1.2 对象的接口 & 1.3 实现方法的隐藏     接口规定了可对一个特定