您的位置:首页 > 数据库 > Oracle

oracle sql语言模糊查询--like查询,查询条件包含%_

2012-01-11 18:45 495 查看
在Where子句中,可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取那些“很像...”的数据记录,以下是可使用的通配符:

%   零或者多个字符

_    单一任何字符(下划线)

其中关于条件,SQL中常用的匹配模式:

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.若查询条件中包含通配符,如果直接查询

比如:select t.*, t.rowid from [user] t where t.u_name like '%cui%%';

结果是搜出该表中u_name列所有的包含cui记录,原因是%是默认的oracle的通配符。

解决方法:

select t.*, t.rowid from [user] t where t.u_name like '%cui%%' escape '\';

这样第一个%就会被转义,查询结果就是满足u_name列所有包含cui%的字符串,escape是oracle定义转义符的关键字

所以查询条件是:

select t.*, t.rowid from [user] t where t.u_name like '%cui[%' escape '[';

结果也是一样的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle sql 语言 user