我正在使用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);
ADTC.. 72
通过线我假设你的意思是表中的行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文档中详细介绍了此命令的语法.您将主要使用该%
符号,因为它意味着匹配零个或多个字符.
通过线我假设你的意思是表中的行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文档中详细介绍了此命令的语法.您将主要使用该%
符号,因为它意味着匹配零个或多个字符.
ADTC的答案很好,但我找到了另一个解决方案,所以如果有人想要不同的东西,我会在这里发布.
我认为ADTC的解决方案更好,但我的解决方案也有效.
这是我找到的另一个解决方案
select p.name from person p where instr(p.name,chr(8211)) > 0; --contains the character chr(8211) --at least 1 time
谢谢.