在字符串中的特定位置查找字符序列

Posted

技术标签:

【中文标题】在字符串中的特定位置查找字符序列【英文标题】:Find character sequence at specific position in string 【发布时间】:2015-11-25 00:25:51 【问题描述】:

我需要使用 SQL 。

示例: atcgggatgccatg

我需要从字符 7 或字符 7-9 开始找到“atg”,无论哪种方式都可以。我不想在字符串末尾找到“atg”。我知道 LIKE,但找不到如何将它用于特定位置。

谢谢

【问题讨论】:

中:support.office.com/en-sg/article/… 如果是SQL Server,可以使用PATINDEX。因为是 Access,InStr 可以工作吗?您可以测试模式的索引并在该索引在正确范围内时执行某些操作。 【参考方案1】:

在 MS Access 中,您可以这样写:

where col like '???????atg*' or
      col like '????????atg*' or
      col like '?????????atg*'

但是,如果您对这种类型的比较感兴趣,您可以考虑使用支持正则表达式的数据库。

【讨论】:

【参考方案2】:

如果您查看this page,您会发现 LIKE 完全有能力做您想做的事。例如,要在 3 字符偏移处查找某些内容,您可以使用类似这样的内容

SELECT * FROM SomeTable WHERE [InterestingField] LIKE '___FOO%'

“_”(下划线)是任何字符的位置标记。模式中有 3 个“任何字符”标记,尾随 '%',意味着上述 SQL 将匹配从第四个字符开始的 FOO 的任何内容,然后是其他任何内容(包括任何内容)。

要查找包含 7 个字符的内容,请使用 7 个下划线。

如果不清楚,请告诉我。

编辑:我引用了 SQL Server 的东西,而不是 Access。交换“?”在我有 '_' 的地方,使用 '*' 而不是 '%',然后查看 this link。

修改后的查询:

SELECT * FROM SomeTable WHERE [InterestingField] LIKE '???FOO*'

【讨论】:

这很有帮助。下划线有替代品吗?我问是因为字符串至少有 50 个字符长。 我不知道,不使用 LIKE。还有其他选择 - 原始帖子的评论者提到了 Mid。我建议坚持使用 LIKE,因为它会让您(几乎不可避免)过渡到 SQL Server 更加顺畅。

以上是关于在字符串中的特定位置查找字符序列的主要内容,如果未能解决你的问题,请参考以下文章

查找字符串中的特定数字并赋值

怎么找到一个字符串中特定字符的位置

c语言中如何在一个字符串中查找/出现的位置?需要第一次出现和第二次出现中间的内容和第二次出现和第三

Python API快餐教程(1) - 字符串查找API

Java语言中,怎么样查找一个特定的字符串,并返回它的索引位置

如何用函数在excel中提取特定字符后面的字符