SQL查询与特殊字符的相等性比较,该字符等于所有字符



我正在编写一个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子句(或者完全省略它,如果我想要所有记录(更改为我实际想要的内容,然后使用这样的技巧。

最新更新