在 SQL Server 中,使用正则表达式筛选文本需要使用 PATINDEX 函数。以下是一个示例查询:

SELECT SUBSTRING('(箱码信息同步(大小箱)--同步失败!StatementCallback; uncategorized SQLException for SQL [exec p_interface_batch_bxin '07122b6d-294c-4882-84fa-1aa5c9e160b2']; SQL state [S0001]; error code [50000]; 批量箱码接口:部分箱[(null)]包装没有在wms维护!; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 批量箱码接口:部分箱[(null)]包装没有在wms维护!)', PATINDEX('%批量箱码接口:部分箱[(null)]包装没有在wms维护!%', '(箱码信息同步(大小箱)--同步失败!StatementCallback; uncategorized SQLException for SQL [exec p_interface_batch_bxin '07122b6d-294c-4882-84fa-1aa5c9e160b2']; SQL state [S0001]; error code [50000]; 批量箱码接口:部分箱[(null)]包装没有在wms维护!; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 批量箱码接口:部分箱[(null)]包装没有在wms维护!)')+LEN('批量箱码接口:部分箱[(null)]包装没有在wms维护!'), LEN('(箱码信息同步(大小箱)--同步失败!StatementCallback; uncategorized SQLException for SQL [exec p_interface_batch_bxin '07122b6d-294c-4882-84fa-1aa5c9e160b2']; SQL state [S0001]; error code [50000]; 批量箱码接口:部分箱[(null)]包装没有在wms维护!; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 批量箱码接口:部分箱[(null)]包装没有在wms维护!)')) as result;

解释一下这个查询:

首先,我们使用 SUBSTRING 函数从文本中提取我们要筛选的部分。我们需要提取的文本是 '批量箱码接口:部分箱[(null)]包装没有在wms维护!', 因此我们需要知道它在文本中的起始位置和长度。我们使用 PATINDEX 函数来查找这个文本在原始文本中的位置。PATINDEX 函数接受两个参数:第一个参数是要搜索的正则表达式,第二个参数是要搜索的文本。在这个例子中,我们使用 '%批量箱码接口:部分箱[(null)]包装没有在wms维护!%' 作为正则表达式,它表示匹配包含“批量箱码接口:部分箱[(null)]包装没有在wms维护!” 的任何文本。我们将原始文本作为第二个参数传递给 PATINDEX 函数。

PATINDEX 函数将返回匹配文本的起始位置。我们接下来使用 SUBSTRING 函数从原始文本中提取我们需要的部分。SUBSTRING 函数需要三个参数:第一个参数是要提取的文本,第二个参数是要提取的文本的起始位置,第三个参数是要提取的文本的长度。在这个例子中,我们将第一个参数设置为原始文本,第二个参数设置为 PATINDEX 函数返回的位置加上我们要匹配的文本的长度,第三个参数设置为我们要匹配的文本的长度。

最后,我们将结果作为 result 列返回。在这个例子中,我们得到了以下结果:

批量箱码接口:部分箱[(null)]包装没有在wms维护!
SQL Server 正则表达式筛选文本 - 使用 PATINDEX 函数

原文地址: https://www.cveoy.top/t/topic/nqGS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录