gpt4 book ai didi

sql - 为什么 LIKE '%' 与 '' 或 NULL 不匹配

转载 作者:行者123 更新时间:2023-12-03 07:38:54 25 4
gpt4 key购买 nike

基本上我有一组用户可以搜索的字段。所以我写了一个以下形式的查询:

SELECT *
FROM my_addr_vw
WHERE fname LIKE :l_fname
AND mname LIKE :l_mname
AND lname LIKE :l_lname;

当用户未将任何值传递给任何条件时,我假设为“%”。

它的作用是,如果一条记录有 NULL 或 mname 中没有值 - 那么该记录就会消失......对于这个 NULL 问题有什么好的解决方案没有匹配任何内容!!

最佳答案

几乎任何与 NULL 的比较都会产生未知的结果(我认为比较的 NULL 结果)。这包括 like ——用于比较模式和字符串。

where 子句仅在比较为 TRUE 时才允许行通过。因此,FALSE 和未知都被过滤掉。

这解释了 NULL 部分。 '' 有点深奥,因为这里 Oracle 与其他数据库和标准不同。 Oracle 将 NULL 和空字符串视为相同。因此,'' 实际上只是 NULL 的同义词(使用默认的 Oracle 设置)。因此,您无法将任何内容与空字符串匹配,就像您无法将任何内容与 NULL 匹配一样。

关于sql - 为什么 LIKE '%' 与 '' 或 NULL 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25434919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com