SQL 查询与特殊字符相等的相等性比较

SQL query equality comparison with special character that is equal to everything

我正在编写一个 python 脚本,它通过 SQL 查询从数据库中获取信息。假设我们有一个 SQL 数组,其中包含一些人的信息。我有一个查询可以检索有关特定人员的信息,我将其姓名作为参数传递给查询。

(" SELECT telephone FROM People_info WHERE name=%s " % (name))

是否可以将特殊字符或类似字符作为参数传递给 return 所有姓名的电话号码?意思是当我与每个名字比较时结果都相等?我只想对所有案例使用一个查询(如果我想要有关一个人或所有人的信息)

您可以使用 LIKE 和通配符 % 匹配无、一个或任意数量的任意字符。

SELECT telephone
       FROM people_info
       WHERE name LIKE '%';

但是,它不会显示 name IS NULL.

的记录

也许优化器足够聪明,可以看出,这实际上等同于 WHERE name IS NOT NULL 并使用索引(如果有的话)。但也许它没有看到它,那么这可能会以比必要的更高的价格出现。所以我宁愿将应用程序中的 WHERE 子句(或者完全省略它,如果我想要 all 记录)更改为我真正想要的,然后使用这些技巧。

您可以在

中编辑SQL代码
SELECT telephone FROM People_info WHERE name=nvl(%s, name)

如果要获取所有记录则传null

请注意,这永远不会获取 name is null 所在的记录,但我想这不是问题。