所以我遇到的问题可能是之前已经问过的问题,但我有一些补充问题要添加到其中。我见过其他关于无法在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/