mysql - 正则表达式匹配两个模式之间的数字
问题描述
我试图在我的 SQL 查询中添加一个正则表达式来查找字符串中的特定数字。
此搜索的参数应为:
- 字符串开头的数字
- 字符串末尾的数字
- + 或 | 之间的数字 人物。例如查找字符串 3+26|2+12 是否包含数字 2
我能够编写一个适用于 PHP 的正则表达式:
(?<=^|\+|\|)(2)(?=\||\+|$)
但我发现 MySQL 不支持这种正则表达式。
将其转换为与 MySQL 兼容的正则表达式有什么帮助吗?
谢谢你。
解决方案
请注意,在 MySQL v8+ 中,您可以使用环视和
(?<=^|[+|])2(?=[|+]|$)
对 ICU 正则表达式库有效。
但是,您可以简单地在组内使用交替。这种模式也适用于旧版 MySQL:
(^|[+|])2([|+]|$)
该模式将返回包含匹配文本的所有记录
(^|[+|])
- 记录开始,+
或|
2
-2
字符([|+]|$)
- 记录结束,+
或|
推荐阅读
- macos - Macos Catalina 使用什么显示服务器?
- .net - Visual Studio SSDT 数据库项目 (.sqlproj) 构建 - 使用没有 MSBUILD (msbuild.exe) 的 CLI 生成 .dacpac
- flutter - 如何在颤动中更改另一个类的字段值?
- flutter - 在使用 Streambuilder 从 firebase 实时数据库获取数据(子子键)时,数据在保存时不按顺序排列
- c# - cshtml页面显示变量名而不是值
- git - $(NugetPackageRoot) 宏在 VS2019 中自动更改为 *.sfproj 文件中的“..\packages\....”,在推送到 Git 之前不断需要撤消更改
- python - OpenCV(4.1.2) 错误: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
- arrays - 如何迭代对象数组?
- c# - 在 XAML 中可视化 ObservaleCollection 属性
- .net-core - 使用 microsoft DI 的运行时构造函数参数