在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 '[';
结果也是一样的
% 零或者多个字符
_ 单一任何字符(下划线)
其中关于条件,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 '[';
结果也是一样的