【问题标题】:Select statement with offset in like选择带有偏移量的语句
【发布时间】:2013-11-25 15:17:58
【问题描述】:

我的表中有一个条目“123456789”。

Select * from map where col like '%1%5%6%7%9'.

我想检索输入序列的顺序匹配的记录,但我也想确保任何2个匹配数字之间的距离小于2。

有什么方法可以指定偏移量吗?

输入是 189,它选择记录,但我希望 1.8.9 彼此相差 2 以内。 12879 是可接受的输出,但 123456789 不是。

【问题讨论】:

  • 这听起来很理论上。你能展示示例数据和预期输出吗?
  • 匹配数字到底是什么?你的意思是相邻的数字?
  • &霍根。是的,我的意思是相邻的数字。
  • &juergen.为了清楚起见,我添加了一张图片和更多细节。
  • 如果您希望用户收到您的回复通知,请使用 @ 而不是 &

标签: sql sqlite select


【解决方案1】:

以下语句需要 1 到 5 之间的 3 到 5 个字符:

SELECT * FROM map WHERE col LIKE '%1___%5%6%7%9' AND col NOT LIKE '%1______%5%6%7%9%'

使用_s,您可以强制输入任意数量的字符。

编辑:字符已更正。来源:SQLite expression

签入this SQL Fiddle sample

【讨论】:

  • 它似乎在 sqlite 中不起作用。我还想将其限制为 1 到 5 之间的 1-3 个字符,不超过 3 个。
  • 感谢 LS_dev。我之前看过 _ ,但是如果条目与它相邻 1 位,那么它会跳过该条目。如果条目是 159,那么它会失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
相关资源
最近更新 更多