【问题标题】:SQLite select query with like condition in reverse反向条件相似的 SQLite 选择查询
【发布时间】:2011-03-27 18:21:55
【问题描述】:

我正在尝试在 php 中编写一个查询,该查询将从数据库中选择与字符串部分匹配的行。

通过一个例子更好地解释:

假设我的数据库有一个名为numberString 的字段,其值为“abcd”。我想编写一个查询,给定“123abcd”,将返回数据库该行的字段。

SELECT mood 
  FROM USERS 
 WHERE numberString like '%$giveNumberString'"

$giveNumberString 是函数参数(即我要查找的字符串)

但我认为这两个 numberString'%$givenNumberString'" 应该是相反的,以便查询按预期工作。有没有办法做到这一点?


好的,表格如下所示:

id | username | numberString | mood
-------------------------------------
1  | myUsrNam | abcd         | happy

现在我想,给定“123abcd”,检索那个人的情绪。换句话说,将 123abcd 与 abcd 匹配。

【问题讨论】:

  • 我很难理解你的问题。你能发布一个示例表格内容,以及你想要检索的内容吗?
  • @Mat 看看我编辑了这个问题!干杯!
  • Full Text Search 是否能满足您的要求还有待商榷。期望用户学会更好地搜索并没有错 - 垃圾输入,垃圾输出。
  • @OMG Ponies 但这对我来说并不是一个真正的选择!我喜欢你的昵称顺便说一句:)

标签: php sql sqlite


【解决方案1】:

我不确定这是一个合法的语法,但让我试一试:你试过了吗

SELECT mood from users where '$giveNumberString' like '%' || numberString || '%'

?

【讨论】:

  • SQLite 使用|| 作为连接运算符。将+es 替换为||,这应该可以。虽然我认为你只需要第一个'%',而不是第二个。
  • @Martijn:是的,我虽然 + 无效...编辑后的答案看起来不错。
  • @mixkat 它有什么作用?说“这行不通”无法帮助任何人!
  • @llya 真的很抱歉!它返回的是随机的东西!我发现解决方案是 SELECT mood from users2 where '$givenNumberString' like concat('%',number);无法真正解释它,但它对我有用,而且在我的脑海中有点道理:)
  • @mixkat 太棒了!所以它是concat - 记下了。祝你好运:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 2021-04-30
  • 2014-04-29
  • 1970-01-01
相关资源
最近更新 更多