当前位置: 首页 > 面试题库 >

MySQL列名称中的通配符

厉高逸
2023-03-14
问题内容

我试图从数据库中选择多个列,但不是所有列。我要选择的所有列均以“ word”开头。

所以我想用伪代码做到这一点:

SELECT "word%" from searchterms where onstate = 1;

或多或少。我没有找到有关如何执行此操作的任何文档-
MySQL中可能吗?基本上,我试图在一行中存储一个带有标识符的单词列表,并且当我提取记录时,我想将所有单词与该标识符关联。所有单词都将作为字符串连接在一起,并带有其标识符传递给数组/字典中的另一个函数。

我正在尝试进行FEW数据库调用,以保持快速的代码。

好的,这是你们的另一个问题:

将有数量可变的列,其中名称为“ word”。对每一行进行单独的数据库调用会更快,每行都会生成一个Python查询,还是仅选择SELECT
*并仅使用我需要的列会更快?可以说SELECT * NOT XYZ吗?


问题答案:

不,SQL不提供任何语法来进行此类选择。

可以 做的是先要求MySQL提供列名列表,然后根据该信息生成SQL查询。

SELECT column_name
FROM information_schema.columns
WHERE table_name = 'your_table'
    AND column_name LIKE 'word%'

让我们选择列名称。然后,您可以在Python中执行以下操作:

"SELECT * FROM your_table WHERE " + ' '.join(['%s = 1' % name for name in columns])

我建议不要使用字符串连接,而建议使用SQLAlchemy来为您生成SQL。

但是,如果您要做的只是限制列数,则根本不需要执行这样的动态查询。数据库的艰苦工作是选择行。在10列或10列中发送5列几乎没有什么区别。

在这种情况下,只需使用,"SELECT * FROM ..."然后使用Python从结果集中选择列即可。



 类似资料:
  • 问题内容: 我数据库中的列名称之一是两个字长,包括一个空格,即:。我正在使用SELECT并引用列名称来提取所需的数据。现在,如果我将该列命名,则我的SELECT可以工作,但如果使用,则不能。它说 “字段列表”中的“未知”列“区域” 有想法吗? 问题答案: 使用反引号。

  • 问题内容: 可能这个问题之前已经回答过,但我找不到。 我使用的是2/3岁的MySQL数据库,其列名称中带有连字符。当我尝试从Java代码中使用这些名称时,这些名称在连字符处被打乱(例如air_port变为air),因此找不到。我尝试在代码中将连字符替换为下划线,希望数据库可以平等地对待它们,但这行不通。 如何转义连字符或如何访问这些列?这可能是所使用的字符集的问题吗? 问题答案: 将名称括在中

  • 问题内容: 我可以使用简单的通配符查询,如下所示: 但是,如果我想在字段中使用通配符,那又如何呢?应该如何看待有效查询: 问题答案: 您可以使用query_string,它允许使用字段名通配符和查询文本通配符。 这些线周围的东西:

  • 问题内容: 有没有办法在mysql中获取表的列名?使用PHP 问题答案: 您可以使用DESCRIBE: 或者,在较新的版本中,您可以使用INFORMATION_SCHEMA: 或者您可以使用SHOW COLUMNS:

  • 问题内容: 我的mysql数据库中的表名是动态生成的。有什么方法可以从名称与模式匹配的表中选择数据?我想它将看起来像: 问题答案: 不,您不能使用MySQL做到这一点。无法动态指定查询中的表-您必须在应用程序中构建列表(或执行多个单表查询)。

  • 我正在使用log4j在我的一个应用程序上做一些日志记录。我的配置文件中的日志记录程序如下所示。 基本上,我希望从我写的代码中获得“信息”级别的消息,但是我希望外部库只在有警告或更可怕的情况下记录。 这正如我所期望的那样工作,但是在“org.eclipse.jetty”下有很多类 有可能这样做吗? 也就是说,我希望整个包中的所有内容都只警告/错误/致命。 我试了上述方法,但没有效果。是否有一个“通配