sql-server - SQL Server,T-SQL 是否有更快的方法来对我的问题中的以下字符串进行子字符串化?

标签 sql-server algorithm tsql substring performance

我有这样的字符串

开放系统 SUB GR (GM/BTIB(1111)/BTITDBL(2222)/BTVY(4444)/ACSVTYSAG)

在我的 GROUPS 列下的数据库中。

我想做的是从该字符串中提取 2222。我正在使用的代码就是这样。

    SELECT 
        SUBSTRING(GROUPS, CHARINDEX('(',GROUPS, CHARINDEX('(',GROUPS, CHARINDEX('(',GROUPS,0)+1)+1)+1, 4 ) AS GroupNo

    FROM MY_TABLE

    WHERE

    ISNUMERIC(SUBSTRING(GROUPS, CHARINDEX('(',GROUPS, CHARINDEX('(',GROUPS, CHARINDEX('(',GROUPS,0)+1)+1)+1, 4 )) = 1

我需要通过更改我正在使用的子字符串方式或更改一些逻辑来固定上面的代码。你能告诉我我的代码中有哪些地方可以改进吗?

最佳答案

您可以实现一个实现了 regex 的 CLR UDF .

关于sql-server - SQL Server,T-SQL 是否有更快的方法来对我的问题中的以下字符串进行子字符串化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2070238/

相关文章:

sql - 等于一是什么意思 - ISNULL (something, 1) = 1

sql-server - 使用 T-SQL 的 CASE 表达式

arrays - Swift 3 数组包含 vs 集合包含

algorithm - 一种仅使用两个临时队列来反转队列的方法,仅此而已?

sql - 如何减去下一行SQL Server中的列值

sql - 执行表更改脚本删除 Azure SQL 表

c# - 存储过程默认值

algorithm - 二维圆最近邻的最佳动态数据结构

sql-server - 删除匹配所有值的特定行

SQL:将一列数据转换为多列