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
所在的记录,但我想这不是问题。
我正在编写一个 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
所在的记录,但我想这不是问题。