【问题标题】:How to check if a string contains a value in the database?如何检查字符串是否包含数据库中的值?
【发布时间】:2019-09-22 14:31:54
【问题描述】:

假设我有一个数据库:

John Smith - 103

Jane Doe - 287

Mike Smith - 371

我有一个类似的字符串:

"Let's see the value of John Smith in the database"

我需要一种方法来检查此字符串中是否包含任何名称并获取与该名称关联的值。

如何在 sqlite 中做到这一点?

这与链接的问题不同,它是相反的。我有字符串,我正在寻找与之匹配的模式。

如果我这样做了:

SELECT *
FROM TABLE
WHERE column LIKE '%string%'

我什么也得不到。

应该是:

SELECT *
FROM TABLE
WHERE string LIKE '%column%'

但我不认为可以这样做。

【问题讨论】:

  • 继续阅读LIKE
  • 您指向的是相反的问题。如果我有模式并且正在寻找包含它的字符串,LIKE 会解决。但我有一个字符串,我正在尝试找到与之匹配的模式。
  • 什么是John Smith - 103?是 1 列还是 2 列的值?
  • 两列,一列是John Smith,另一列是103。

标签: sqlite


【解决方案1】:

你可以使用sqlite instr:

instr(X,Y)

instr(X,Y) 函数查找字符串 X 中第一次出现的字符串 Y,并返回前面的字符数加 1,或者 如果在 X 中找不到 Y,则为 0。或者,如果 X 和 Y 都是 BLOB,则 instr(X,Y) 返回比第一个之前的字节数多一个 Y 的出现,如果 Y 不在 X 中的任何位置出现,则为 0。如果两者 instr(X,Y) 的参数 X 和 Y 是非 NULL 并且不是 BLOB 两者都被解释为字符串。如果 X 或 Y 中的任何一个为 NULL instr(X,Y) 则结果为 NULL。

类似:

SELECT * from table
WHERE instr("Let's see the value of John Smith in the database",name) <> 0

您可能想要lower()upper() 所有字符串来处理大小写。

【讨论】:

  • 就是这样,我不知道instr函数。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2012-05-06
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
相关资源
最近更新 更多