sql-server - 如何在 SQL Server 中使用 PATINDEX?
问题描述
在 SQL Server 2012 中,我有一列包含长文本数据。在文本中的某处,有一些格式的文本
{epa_file_num} = {138410-81}
如果存在,我想提取138410-81
为列值。在常规的 JS 正则表达式中,我会使用这样的东西{ *epa_file_num *} *= *{ *\d*-?\d* *}
来匹配列,然后可能是一个捕获组来获取值。
但是如何在 SQL Server 2012 中获得它?
谢谢
解决方案
不是正则表达式,但这可能会满足您的要求:
DECLARE @Input VARCHAR(MAX)='{some name} = {a value} some text {epa_file_num} = {138410-81} other text'
SET @Input=REPLACE(@Input,' ','')
SET @Input=SUBSTRING(@Input,NULLIF(PATINDEX('%{epa_file_num}={%',@Input),0)+LEN('{epa_file_num}={'),LEN(@Input))
SET @Input=SUBSTRING(@Input,1,NULLIF(CHARINDEX('}',@Input),0)-1)
SELECT @Input
首先,我删除所有空格,然后查找{epa_file_num}=
并获取此字符串之后的所有内容,直到下一个}
.
推荐阅读
- git - 推送被拒绝:在提交消息中找不到 JIRA 问题。分支名称(预接收挂钩被拒绝)错误:未能将一些参考推送到 http://@bitbucket.com
- strapi - 以管理员身份登录后,如何在我的前端页面上列出所有用户?
- react-native - React Native,将导航传递给无状态平面列表组件
- dynamics-crm - 我可以在 Dynamics 中使用 Web API 原子地创建两个实体,然后创建第三个链接实体吗?
- android - 广告未在 Android 8 API 26 中使用 react-native-admob 展示
- c# - 如何在 Visual C# 中创建用于通信的自定义应用程序 uri 方案/协议?
- spring-boot - 春季启动 hsqldb 详细信息
- c# - 如何为特定查询请求启用 Apollo Tracing with Hot Chocolate?
- jquery - 将按钮的 data-attr 绑定到 div
- r - purrr:如何将一个列表与多个嵌套列表相交