一尘不染

在Oracle SQL查询中使用字符串包含功能

sql

我正在使用Oracle数据库,我想知道如何在varchar类型的列中查找行,该列的值包含一个包含某些字符的字符串。

我正在尝试类似的事情(这是我想要的一个简单示例),但是它不起作用:

select p.name
from   person p
where  p.name contains the character 'A';

我还想知道是否可以使用诸如chr(1234)1234是ASCII码这样的函数来代替'A'示例查询中的字符,因为在我的情况下,我想在数据库值中搜索人名包含带有8211的字符作为ASCII码。

通过查询,select CHR(8211) from dual;我得到了想要的特殊字符。

例子:

select p.name
from   person p
where  p.name contains the character chr(8211);

阅读 182

收藏
2021-03-17

共1个答案

一尘不染

我假设您是按 表示表中的行person。您正在寻找的是:

select p.name
from   person p
where  p.name LIKE '%A%'; --contains the character 'A'

以上是区分大小写的。对于不区分大小写的搜索,您可以执行以下操作:

select p.name
from   person p
where  UPPER(p.name) LIKE '%A%'; --contains the character 'A' or 'a'

对于特殊字符,您可以执行以下操作:

select p.name
from   person p
where  p.name LIKE '%'||chr(8211)||'%'; --contains the character chr(8211)

LIKE运营商的模式相匹配。该命令的语法在Oracle文档中有详细描述。您将主要使用该%符号,因为它意味着
匹配零个或多个字符

2021-03-17