首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL与regex类似,相当于start ^和end $ of line

SQL与regex类似,相当于start ^和end $ of line
EN

Stack Overflow用户
提问于 2018-08-31 16:54:42
回答 1查看 3.2K关注 0票数 5

我想在类似于表达式的Firebird中使用类似于(^|\s)1001(\s|$)的正则表达式:

示例

  • abc 1001 abc -真
  • abc 121001 abc -假
  • 1001 abc -真
  • 121001 -假
  • abc 1001 -真

我试着把它转换成Firebird中的正则表达式:

列类似于(^|[:WHITESPACE:])abc 1001 abc($|[:WHITESPACE:]),但是^ (行的开始)和$ (行的末尾)不能工作,查询的结尾是:

无效,类似于模式异常。

我在https://firebirdsql.org/refdocs/langrefupd25-similar-to.html的火鸟文档中找不到关于行的开始和结束的任何信息

EN

回答 1

Stack Overflow用户

发布于 2018-08-31 17:18:27

现在,(^|\s)1001(\s|$)将无法工作,因为它意味着您希望获得部分匹配。用SIMILAR TO是不可能的

类似于将字符串与SQL正则表达式模式匹配。与其他语言不同的是,模式必须匹配整个字符串才能成功--仅匹配子字符串是不够的。

然后,(^|\s)意味着字符串或空格的开始。这意味着,您应该检查字符串是否有任何字符,然后可以在字符串的开头出现空白或1001($|\s)的意思是字符串或空格的两端。这意味着,你需要对3起案件进行解释:

  • 任何字符,空格,1001,空格和任何字符
  • 1001,whitesapce,任何字符
  • 任何字符,空格,1001

你需要用

代码语言:javascript
复制
WHERE col SIMILAR TO '%[[:WHITESPACE:]]1001[[:WHITESPACE:]]%' or col SIMILAR TO '1001[[:WHITESPACE:]]%' or col SIMILAR TO '%[[:WHITESPACE:]]1001'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52119825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档