php - 在 MySQL 中使用 IN/LIKE、TRIM 或 CONTAINS 提取数据库中的变量数据

标签 php mysql sql syntax

所以我遇到的问题可能是之前已经问过的问题,但我有一些补充问题要添加到其中。我见过其他关于无法在Where 子句中使用IN 和LIKE 的Stackoverflow 问题。唯一的问题是我试图避免使用 LIKE 和 OR,因为在 PHP 中我将数据放入数组中并使用 (',') 内爆数据,这样我就可以使用 IN,在某些情况下,数据可能是数百个条目,并且使用具有多种组合可能性的 LIKE 似乎并不安全。我的工作中有人提到我可以使用 TRIM,但我觉得这不能解决我的问题。话虽如此,让我提供一些见解。

我从用户名是[UserName]的目录中提取数据,该用户名或在某些情况下,多个用户名被存储到一个数组中,并运行一个while循环来获取基于房间号的房间号用户名。问题是这个包含房间号的表(这是只读的,显然没有人知道谁有权进行更改)的用户名是[UserName]。因此,我永远不会获得该数据,因为 [UserName][ UserName] 显然不一样。

我需要找到一种方法来编写更可靠的查询,该查询基本上会像这样查看每个用户名:%UserName%

或者在使用 WHERE/IN 子句(或类似的东西)时几乎否定数据库中的空格。

最佳答案

我不明白为什么使用 TRIM 不起作用...

选项 1:

SELECT u.*, TRIM(u.username) as username_canonical
FROM user u
WHERE TRIM(u.username) = ?

选项 2:

SELECT u.*, TRIM(u.username) as username_canonical
FROM user u
HAVING username_canonical = ?

对于其中任何一个,除了用户名条件之外,您仍然可以使用 IN 子句。

关于php - 在 MySQL 中使用 IN/LIKE、TRIM 或 CONTAINS 提取数据库中的变量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28241572/

相关文章:

PHP数组映射

php - orWhere 在 Laravel 查询生成器中查询

MySql:在没有子选择的情况下构建此查询

c# - 慢查询 Entity Framework

asp.net - ADO.NET 隔离级别中没有已提交读快照?

sql - Openbase SQL 区分大小写的怪癖 ('=' 与 LIKE)- 移植到 MySQL

php - 使用 Condition 子句查询两个表中选定的列

php - Symfony2 和 PHPUnit - 访问 getContainer()

php - AngularJS 到 Mysql

python - 如果 python 包依赖于我使用的 SQL 数据库,如何将其公开?