Oracle like 通配符使用,带参数;下面语句怎么改

Oracle like 通配符使用,带参数;下面语句怎么改,第1张

return OracleHelperGetDataTable("select CBBH from Z_DTYW_CBJBXX where CBBH like ",parameters);

既然是插入 *** 作,其实需要特别照顾的也就是字符串分解符单引号,其他通配符,转义字符只要在单引号之内都是作为普通字符输入的,不需要考虑。想要在字符串内包含一个单引号,只需要连续输入两个单引号即可。

1、首先在oracle软件中,可以使用下面的 SELECT 语句:(其中%就是通配符,标识表达式>=1个字符)。

2、使用其他的通配符的SQL语句如下图示。

3、使用全通配符,就可以实现一个字符串是否包含包含某个字符串的查找了。

4、通过使用not关键字可以使用不包含查找。

5、最后在SQL中,可使用以下通配符,如下图所示,就完成了。

LIKE语句作用为字段的模糊查询,包含通配符,%代表任意个数字符,_代表一个字符,

示例如下,

1、创建测试表,createtabletest_like(idnumber,valuevarchar2(20));

2、插入样例数据,

insertintotest_likevalues(1001,'abcd');

insertintotest_likevalues(1002,'cdef');

insertintotest_likevalues(1003,'fgh');

insertintotest_likevalues(1004,'acdfg');

commit;

3、查询所有记录,selectt,rowidfromtest_liket,

4、编写like语句,查询包含字母a的记录,selectt,rowidfromtest_liketwherevaluelike'%a%';

Oracle中的Like *** 作符使用'_'和'%'作为通配符,使用就像这样:

SELECT name FROM test_like WHERE name like '_a%';

即匹配test_like表name列中第2个字母是a的所有行。但是注意,Oracle匹配时区分大小写的。也就是说上面的查询时无法查询到name='SAas'这行的。

Oracle10g中提供的正则表达式功能可以很好的解决这个问题,当然这不是使用正则表达式函数的唯一优点,实际上它比Like *** 作符强大的多。

正则表达式的语法就不用多说了,现在大多数语言都支持正则表达式了。

下面主要介绍下Oracle中正表达式函数REGEXP_LIKE的使用:

REGEXP_LIKE(x, pattern [, match_option])  

当源字符串x匹配正则表达式pattern时,返回true。可以使用match_option修改默认匹配选项,该参数可以被设置为:

- 'c', 说明在进行匹配时区分大小写(默认选项)

- 'i', 说明在进行匹配时不区分大小写

- 'n'   允许使用可以匹配任意字符的 *** 作符(通常是'')

- 'm', 将x作为一个包含多行的字符串

举个例子:

SELECT  FROM test_reg WHERE REGEXP_LIKE(name, '(a)\1', 'i');

上面的SQL语句匹配test_reg表中name列含有两个连续字符'a'(不区分大小写)的行,如name='SaAs'。此外,这里我们还使用了正则表达式中的后引用语法——\n表示重复n次上次匹配的内容,此处(a)\1表示匹配两个连续的字符'a'。

需要注意的是,后引用必须使用双括号,否则会出现如下结果:

SELECT  FROM test_reg WHERE REGEXP_LIKE(name, 'a\1', 'i')

ORA-12727: 正则表达式中的后向引用无效

最后一点,不要混淆LIKE *** 作符的通配符和正则表达式的语法,也就是说不要再正则表达式中使用LIKE *** 作符中的通配符,如果这样做会得到未知的结果,因为'_'和'%'会被正则表达式当做普通字符进行匹配。

比如下面这条SQL想要得到name='SaAs'这条记录,但实际的查询结果为空。

SQL> SELECT  FROM test_reg WHERE REGEXP_LIKE(name, '^_(a)\1', 'i');

NAME

----------  实际应该使用:

SQL> SELECT  FROM test_reg WHERE REGEXP_LIKE(name, '^(a)\1', 'i');    

NAME

----------   SaAs

楼主 %代表是任意字符长度

比如有个员工表

select from 表名 where 姓名 Like '%中%' --这个是查询只要包含中字就查询出来

select from 表名 where 姓名 Like '李%' --这个是查询 只查询李字开头的

select from 表名 where 姓名 Like '%佳' --这个是查询 只查询佳字结尾的

以上就是关于Oracle like 通配符使用,带参数;下面语句怎么改全部的内容,包括:Oracle like 通配符使用,带参数;下面语句怎么改、oracle 插入所有通配符 转义字符 特殊符号、oracle取前几条数据语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9351831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存