2016-08-20 167 views
1

我在这里新到StackOverflow,对于IT来说比较新,只是学习SQL的一些东西。请原谅我,如果我已经发布了这个错误的地点或问一个愚蠢的问题。Oracle SQL LIKE查询

希望能出现以下问题,我有一些帮助:

我有一个Oracle数据库(使用Oracle SQL Developer来访问它)。

我想执行一个命令,似乎无法弄清楚如何从数据库中提取。我正在尝试发现在其标题中包含字符串“计算机”的列(DEPTNAME)中部门的号码

我想下面的命令会给我我的答案,但它仅仅是返回值为0:

select count(DEPTNAME) 
from Department 
where DEPTNAME LIKE '%comp%'; 

然而,当我使用这个命令,我得到的41回这个号码ISN”但正确。

select count(DEPTNAME) 
from Department 
where DEPTNAME LIKE '%c%'; 

我基本上只需要知道命令为DBMS找到随机字符串并显示此字符串出现在列中的次数。

+0

你的第一个命令应该返回正确的结果。你确定名字包含* computer *而不是* computer *(即大写与小写)?请编辑您的问题并添加样本输入(即您的部门表内容) –

+0

@FrankSchmitt - 不一定。即使案件不是问题,只检查“comp”也会返回“竞争性编程”和“解压缩”。提供的两种解决方案都表明了这一点。 – mathguy

回答

2

在Oracle中,默认情况下比较是区分大小写的。你可能也想尝试:

select count(DEPTNAME) 
from Department 
where lower(DEPTNAME) LIKE '%comp%'; 

或者,更好:

select count(DEPTNAME) 
from Department 
where lower(DEPTNAME) LIKE '%computer%'; 
1

尝试写“计算机”全名...确保的上部和下部的情况下,并确保它被正确写入

select count(DEPTNAME) 
from Department 
where DEPTNAME LIKE '%computer%'; 

别的了“%c%”将返回所有的词在字符串中的任何位置都包含c。

0

感谢大家的回复。这给了我我正在寻找的东西!这是一个大小写敏感的问题:

select count(DEPTNAME) 
from Department 
where lower(DEPTNAME) LIKE '%comp%'; 
+0

您应该接受解决您的问题的答案(例如Gordon's),而不是再次添加相同的答案。 –

+0

非常感谢 –