我想在类似于表达式的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的火鸟文档中找不到关于行的开始和结束的任何信息
发布于 2018-08-31 17:18:27
现在,(^|\s)1001(\s|$)将无法工作,因为它意味着您希望获得部分匹配。用SIMILAR TO是不可能的
类似于将字符串与SQL正则表达式模式匹配。与其他语言不同的是,模式必须匹配整个字符串才能成功--仅匹配子字符串是不够的。
然后,(^|\s)意味着字符串或空格的开始。这意味着,您应该检查字符串是否有任何字符,然后可以在字符串的开头出现空白或1001。($|\s)的意思是字符串或空格的两端。这意味着,你需要对3起案件进行解释:
1001,空格和任何字符1001,whitesapce,任何字符1001你需要用
WHERE col SIMILAR TO '%[[:WHITESPACE:]]1001[[:WHITESPACE:]]%' or col SIMILAR TO '1001[[:WHITESPACE:]]%' or col SIMILAR TO '%[[:WHITESPACE:]]1001'https://stackoverflow.com/questions/52119825
复制相似问题