oracle sql 匹配clob字符串ToDate:""20180208"" PutCall:""C"" Strike:1.023 asdhjfasd )(Notice1:""20140205"" Notice2:""20190205"" FromDate:""20190208""中的Strike:1.0
时间: 2023-07-08 18:49:14 浏览: 78
如果要匹配的字符串中可能包含其他字符,可以使用Oracle的正则表达式函数REGEXP_REPLACE。
可以使用以下SQL语句来提取匹配到的Strike值:
```
SELECT REGEXP_REPLACE(REGEXP_SUBSTR(clob_column, 'Strike:\s*\d+(\.\d+)?\s+'), '[^0-9\.]', '') AS Strike
FROM your_table
WHERE your_condition;
```
其中,clob_column是包含CLOB字符串的列名,your_table是包含该列的表名,your_condition是你的查询条件。这个SQL语句会返回匹配到的Strike值,如果没有匹配到,则返回空字符串。
正则表达式 `Strike:\s*\d+(\.\d+)?\s+` 匹配以 Strike: 开头,后面跟着 0 个或多个空格,然后是一个或多个数字,可以包含一个小数点和更多数字,最后再跟着 1 个或多个空格。函数 REGEXP_SUBSTR 返回匹配到的字符串,然后函数 REGEXP_REPLACE 将所有的非数字和非小数点的字符替换为空字符串,最后得到的就是匹配到的 Strike 值。
相关问题
oracle sql 匹配clob字符串ToDate:""20180208"" PutCall:""C"" Strike:1.023 asdhjfasd )(Notice1:""20140205"" Notice2:""20190205"" FromDate:""20190208""中的Strike:1.023
匹配 CLOB 字符串中的 Strike 值,可以使用类似上面的正则表达式,只需要将匹配数字部分的正则表达式修改为 `\d+(\.\d+)?` 即可。具体的 SQL 语句如下:
```
SELECT REGEXP_REPLACE(REGEXP_SUBSTR(clob_column, 'Strike:\s*\d+(\.\d+)?\s+'), '[^0-9\.]', '') AS Strike
FROM your_table
WHERE your_condition;
```
其中,clob_column 是包含 CLOB 字符串的列名,your_table 是包含该列的表名,your_condition 是你的查询条件。这个 SQL 语句会返回匹配到的 Strike 值,如果没有匹配到,则返回空字符串。
正则表达式 `Strike:\s*\d+(\.\d+)?\s+` 匹配以 Strike: 开头,后面跟着 0 个或多个空格,然后是一个或多个数字,可以包含一个小数点和更多数字,最后再跟着 1 个或多个空格。函数 REGEXP_SUBSTR 返回匹配到的字符串,然后函数 REGEXP_REPLACE 将所有的非数字和非小数点的字符替换为空字符串,最后得到的就是匹配到的 Strike 值。
oracle sql 匹配clob字符串ToDate:""20180208"" PutCall:""C"" Strike:1.0 )(Notice1:""20140205"" Notice2:""20190205"" FromDate:""20190208""中的Strike:1.0
你可以使用Oracle的REGEXP_SUBSTR函数来匹配CLOB字符串中的Strike值。具体的正则表达式可以是:
`Strike:\s*\d+(\.\d+)?`
这个正则表达式匹配以Strike:开头,后面紧跟着0个或多个空格,然后是一个或多个数字,可以包含一个小数点和更多数字。在匹配到的字符串中,可以使用SUBSTR函数来提取Strike值。
完整的SQL语句如下:
```
SELECT SUBSTR(REGEXP_SUBSTR(clob_column, 'Strike:\s*\d+(\.\d+)?'), 8) AS Strike
FROM your_table
WHERE your_condition;
```
其中,clob_column是包含CLOB字符串的列名,your_table是包含该列的表名,your_condition是你的查询条件。这个SQL语句会返回匹配到的Strike值,如果没有匹配到,则返回空字符串。
阅读全文