sql server 取字符串多个括号里的数字中文不要
时间: 2024-10-11 07:14:33 浏览: 22
C#实现String字符串转化为SQL语句中的In后接的参数详解
在SQL Server中,如果你想要从包含多个括号的字符串中提取括号内的数字,你可以使用正则表达式和内置函数`PATINDEX()`或`STRING_SPLIT()`配合查询。这里假设数字总是紧跟在左括号之后并且用右括号包围。
例如,你可以使用`PATINDEX`结合`SUBSTRING`函数:
```sql
DECLARE @input NVARCHAR(MAX) = 'abc(123)d(e456)f';
WITH CTE AS (
SELECT 0 AS Pos, SUBSTRING(@input, 1, CHARINDEX('(', @input)) AS SubStr
UNION ALL
SELECT Pos + LEN(SUBSTRING(@input, Pos, CHARINDEX(')', SubStr + ')', @input))),
SUBSTRING(@input, Pos + LEN(SUBSTRING(@input, Pos, CHARINDEX('(', SubStr + ')', @input))), CharIndex(')', @input))
FROM CTE
WHERE CHARINDEX(')', SubStr + ')', @input) > 0
)
SELECT CAST(SUBSTRING(Col, CHARINDEX('.', Col) + 1, LEN(Col)) AS INT) AS ExtractedNumber
FROM (SELECT DISTINCT PatPos - LenPrePos AS Col
FROM CTE
) sub
WHERE Col NOT LIKE '%[^0-9]%'
```
这个查询首先通过递归找到每个括号对的位置,然后从找到的开始位置提取数字。注意这个方法假设每个数字都是单独的,并且不嵌套括号。
阅读全文