【问题标题】:Pulling Variable Data in Database with IN/LIKE, using TRIM, or CONTAINS in MySQL在 MySQL 中使用 IN/LIKE、TRIM 或 CONTAINS 提取数据库中的变量数据
【发布时间】:2015-01-30 17:38:03
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如何使用TRIM 不能解决您的问题?
  • 如果您实际上是在IT 工作,那么称自己为Code Newby 可能不是一个好主意。顺便说一句。
  • “我可以使用 TRIM,但我感觉这样并不能解决我的问题。”啊,Phil 博士编程学院,我明白了。
  • @Jean-FrançoisSavard 哈哈,你说得对,但我缺乏编写代码的经验,我很谦虚。我更像是一个硬件人。也许有一天我可以成为代码专家
  • @DigitalChris 哈哈你知道,但真的,我不确定。我只是尽力弄清楚需要做什么,我只是不确定。

标签: php mysql sql syntax


【解决方案1】:

我看不出使用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 子句。

【讨论】:

  • 感谢您实际提供答案。在做了一些阅读之后,我一定对 TRIM 的实际功能感到困惑。感谢您为我澄清这一点。
猜你喜欢
  • 2017-04-08
  • 2016-02-29
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多