关于NULL值的Oracle DB LIKE查询

时间:2016-08-04 11:12:39

标签: sql oracle

这个问题是关于Oracle DB的。我想知道Oracle DB查询LIKE子句如何对NULL值起作用。

Select * From table_name where column_name like 'text%'  

在上面的查询中,Oracle db如何处理列'column_name'的空值行?还有'不喜欢'怎么样?

另外,我发现没有为以下查询选择具有NULL值的行。

Select * From table_name where column_name NOT LIKE 'text%'  .

我不知道为什么列的NULL值不在结果中,即使它们为null,因此不像'text%'。

4 个答案:

答案 0 :(得分:2)

NULL值基本上无法进行所有比较。一般的想法是NULL的意思是“我不知道它的价值是什么”。因此,当您使用like模式'text%'时,答案是“我不知道它的价值是什么”。它是NULL

如果您使用not like,答案是相同的“我不知道结果是什么”。

这就是NULL的工作方式。即使有likenot like。即使使用Oracle。

答案 1 :(得分:1)

第一个
  当您搜索column_name like 'text%'时,db搜索以" text"开头的字符串;不是其他字符串,text之后会发生什么并不重要。它可以是text123,text stack等等。

第二个
  当您搜索NOT LIKE 'text%', db搜索不应使用text启动的所有列时,列值将包含不在结果中的文本。它就像"atext"一样,会出现在搜索结果中。

因此,在两种情况下, NULL 值永远不会匹配,因此他们不会进入结果。

希望它会有所帮助。

答案 2 :(得分:0)

试试这个,

li

答案 3 :(得分:0)

试试这个,

SELECT *
FROM table_name
WHERE NVL(column_name,1) NOT LIKE NVL('',2) -- '' OR NULL you can use