我正在编写一个python脚本,该脚本通过SQL查询从数据库获取信息。假设我们有一个SQL数组,其中包含一些人的信息。我有一个查询,可以检索有关特定人员的信息,我将其姓名作为参数传递给该查询。
(" SELECT telephone FROM People_info WHERE name=%s " % (name))
是否可以传递一个特殊字符或类似的东西作为参数,以返回所有名称的电话?这意味着当我与每个名字进行比较时,结果会相等?我只想对所有情况使用一个查询(如果我想要一个人或所有人的信息(
您可以在中编辑SQL代码
SELECT telephone FROM People_info WHERE name=nvl(%s, name)
如果你想获得的所有记录,就通过null
注意,这永远不会得到name is null
所在的记录,但我认为这不是问题。
您可以使用LIKE
和通配符%
,它不匹配任何字符,也不匹配任何数量的任何字符。
SELECT telephone
FROM people_info
WHERE name LIKE '%';
但是,它不会显示name IS NULL
所在的记录。
也许优化器足够聪明,可以看到这实际上相当于WHERE name IS NOT NULL
,并使用索引(如果有的话(。但也许它看不到,那么这可能会比必要的价格更高。因此,我宁愿将应用程序中的WHERE
子句(或者完全省略它,如果我想要所有记录(更改为我实际想要的内容,然后使用这样的技巧。