这个问题是关于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%'。
答案 0 :(得分:2)
NULL
值基本上无法进行所有比较。一般的想法是NULL
的意思是“我不知道它的价值是什么”。因此,当您使用like
模式'text%'
时,答案是“我不知道它的价值是什么”。它是NULL
。
如果您使用not like
,答案是相同的“我不知道结果是什么”。
这就是NULL
的工作方式。即使有like
和not 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