【问题标题】:MySQL querying a name that's across two columnsMySQL查询跨两列的名称
【发布时间】:2021-09-13 04:56:38
【问题描述】:

我需要在只有全名可用的情况下进行 MySQL 查询。例如“John Doe”但在我的数据库中,我有两列,first_name 和 last_name,并且名称被分成这两列。所以如果我想查询,我必须这样做:

SELECT * FROM users WHERE first_name='John' AND last_name='Doe'

我尝试将名称与空格分开,然后像上面一样构建查询。但问题是有些名字是双桶的。有什么方法可以在 MySQL 中进行查询,我可以查询组合两列等于 John Doe 的位置?

【问题讨论】:

  • 您应该包括解决方案失败时的材料和具体示例。改进解析输入的逻辑可能会产生最佳解决方案。

标签: mysql


【解决方案1】:

这样的事情应该可以工作:

select * from users
where concat(first_name, ' ', last_name) = 'John Doe';

【讨论】:

  • 应该注意,通过这样做,索引搜索的任何可能性都可能被扫描取代。这对 OP 来说可能是也可能不是问题,但这是这种模式的潜在深远后果。
  • @MatBailie 谢谢,我不像 PostgreSQL 那样熟悉 MySQL。你能在 MySQL 中创建一个可以使用它的索引吗?
  • MySQL 8 支持计算列(称为生成列),可以建立索引。 OP 没有指定是 MySQL 8 还是 5.x
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多