今天老大在讲课的时候碰到一个问题
他在演示如何手动备份库时,想选出系统中以'_HIS'结尾的表
输入SQL语句如下
select * from obj where object_type='TABLE' and object_name like '%_HIS';
对这条SQL语句有必要说明一下,obj是该用户下的所有对象(已经以某用户身份登录),object_type='TABLE'是设置一个过滤类型,将所有对象类型是表的过滤出来,然后object_name则是根据对象名进行过滤
结果有一张表是没有下划线'_'但是以HIS结尾的,也在结果输出
最后只好将以'_HIS'结尾的表一个个写在not in()里来过滤
数据库是使用ORA
LIKE关键字共有四种通配符。“%”代表“包含0个或更多字符的任意字符串”;“_”代表“任何单个字符”;“[]”代表“指定范围(例如 [a-f])或集合(例如 [abcdef])内的任何单个字符”;“[^]”代表“不在指定范围(例如 [^a - f])或集合(例如 [^abcdef])内的任何单个字符”。
从以上可以看出,其实'%_HIS'和'%HIS'是等效的
那时我们都没有想起来Oracle的escape关键字,这个关键字可以定义转义字符,escape定义的转义字符后第一个字符就是想转义的内容
举个例子,比如我想定义'/'为转义字符,来将通配符'_'变为普通字符
select * from obj where object_type='TABLE' and object_name like '%/_HIS' escape '/';
这样子就可以了。
【附注】:
在mysql中,'\'是转义字符,所以在mysql中可以直接这样写
select * from obj where object_type='TABLE' and object_name like '%\_HIS';
----------------------------20090813-------------------------------
如果使用ORA的一些函数也可以达到效果,如
select object_name from obj where object_type='TABLE' and instr(UPPER(object_name),'_HIS')>0;
----------------------------20090922-------------------------------
还有一个instr的函数可以达到效果
select object_name from obj where object_type='TABLE' and instr(UPPER(object_name),'_HIS')<>0;
分享到:
相关推荐
`ESCAPE`关键字允许我们在`LIKE`语句中定义一个转义字符,使得这个字符后面跟着的特殊字符不被解析为通配符,而是当作普通的文本字符进行匹配。这在处理包含通配符字符的数据时非常有用。 例如,假设我们有一个名为...
在SQL语句中可以在查询条件的任意位置放置一个%来代表一个任意长度的字符串。例如,在查询用户名以"M"开头的用户时,可以使用like 'M%'语句来实现。 3. "[]"通配符 "[]"通配符在模式查询中可以利用来实现查询一定...
通过对ibatis框架下SQL语句中特殊字符处理方法的详细分析,我们可以看到,合理地使用字符串转义处理结合动态SQL标签,可以有效地解决特殊字符带来的问题。这样不仅可以保证查询的准确性,还可以提高代码的健壮性和...
3. ESCAPE 关键字:ESCAPE 关键字用于定义转义符,以便在搜索字符串时将通配符作为普通字符使用。 下面是一些使用 LIKE 关键字和通配符的示例: * WHERE title LIKE '%computer%':查找书名中包含单词 computer 的...
Transact-SQL语句是微软SQL Server数据库管理系统中使用的SQL语言的扩展版本,它为数据库操作提供了丰富多样的语句和函数。其中,LIKE关键字用于在WHERE子句中进行模式匹配,是模糊查询时常用的功能,可以配合通配符...
使用`ESCAPE`关键字来指定一个转义字符,使得特殊字符可以在`LIKE`子句中被正确解释。例如: ```sql SELECT * FROM table_name WHERE column LIKE 'pattern\_%' ESCAPE '\'; ``` 这里的反斜杠`\`就是转义字符。 ###...
5. **转义字符**:如果你的模式中包含了SQL Server的通配符或特殊字符,你可以使用`ESCAPE`关键字指定一个转义字符,这样就可以在模式中使用这些特殊字符。例如,如果你的模式是`'%_abc%'`,而你希望匹配实际字符串...
该函数会转义SQL语句中使用的字符串中的特殊字符,例如单引号和双引号,并考虑到当前字符集。然而,需要注意的是,`mysql_real_escape_string()`函数并不会转义SQL中的通配符字符`%`和`_`。 使用`mysql_real_escape...
Oracle SQL语句是数据库开发中的基础工具,它用于在Oracle数据库中进行数据查询、更新、删除等操作。本文主要探讨了几个重要的SQL概念和...在实际应用中,还应结合具体的业务需求和性能优化技巧,灵活运用这些SQL语句。
当需要在`LIKE`语句中匹配特殊字符,如`%`或`_`时,可以使用`ESCAPE`关键字来定义一个转义字符。这样,任何紧跟在转义字符后面的特殊字符都将被视为普通文本字符。例如: - `LIKE '%30!%%' ESCAPE '!'`:这里`!`是...
在 LIKE 操作符中,可以使用 ESCAPE 关键字定义转义符,以便在字符串中搜索通配符而不是将其作为通配符使用。例如: SELECT * FROM finances WHERE description LIKE '%5/%%' ESCAPE '/' 这条语句将查询包含字符串...
在使用LIKE进行模式匹配时,如果通配符本身出现在模式中,需要使用ESCAPE关键字来转义该字符。例如,查询以`s_`开头的表名: ```sql SELECT table_name FROM user_tables WHERE table_name LIKE 'S\_%' ESCAPE '\';...
为了解决这个问题,可以使用`ESCAPE`关键字定义一个转义字符。例如,如果你的模式中需要包含实际的百分号,可以这样写: ```sql SELECT name FROM customers WHERE name LIKE '10%OFF' ESCAPE '\'; ``` 在这里,`\`...
在实际应用中,当我们构建SQL查询语句时,比如`SELECT * FROM table WHERE number LIKE '%/%%' ESCAPE '/'`,`LIKE`操作符后面的`'%/%%'`就是一个已经转义过的字符串,其中`%`被转义为`/%`,并且使用`ESCAPE '/'`来...
- `LIKE 'd_\_%' ESCAPE '\'`:使用转义字符匹配特定模式。 #### 五、SQL 语法要点 - **比较运算符**:`=`, `!=`, `, `>`, `, `>=` - **逻辑运算符**:`AND`, `OR`, `NOT` - **范围匹配**:`BETWEEN ... AND ...`...
- **`escape`**:用于转义通配符,使得通配符被视为普通字符。 ### 日期时间函数 #### 18. **`getdate()`** - **功能**:返回当前系统日期和时间。 - **示例**:`SELECT getdate();` 返回的是当前的日期和时间。...
`LIKE`关键字还可以与`ESCAPE`配合使用,定义转义字符,如在以下查询中,`_`被视为普通字符: ```sql SELECT * FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$'; ``` `BETWEEN AND`关键字用于范围查询,如...