SQL,用case when写,当一个混合字符串#NOTE_S中包含一个连续的18位数字则从这个混合部分中截取出这个18位数字,没有的话输出无数据
时间: 2024-10-23 17:16:23 浏览: 30
SQL中的CASE WHEN语句可以用来根据特定条件执行不同的操作。为了从混合字符串`#NOTE_S`中提取连续的18位数字,你可以使用类似下面的查询:
```sql
SELECT
CASE
WHEN REGEXP_LIKE(#NOTE_S, '^[0-9]{18}$') THEN SUBSTR(#NOTE_S, INSTR(#NOTE_S, '^[0-9]{18}'), LENGTH('#NOTE_S'))
ELSE '无数据'
END AS ExtractedNumber
FROM your_table;
```
这里做了以下几步:
1. `REGEXP_LIKE(#NOTE_S, '^[0-9]{18}$')`: 使用正则表达式检查`#NOTE_S`是否以18位数字开头并结束。`'^[0-9]{18}'`匹配18位连续的数字,`$`表示字符串结尾。
2. `INSTR(#NOTE_S, '^[0-9]{18}')`: 查找该18位数字在字符串`#NOTE_S`中的开始位置。
3. `SUBSTR(#NOTE_S, ..., LENGTH(#NOTE_S))`: 使用`SUBSTR`函数截取从开始位置到字符串结尾的部分,如果找到18位数字,则返回这部分;如果没有找到,将返回整个字符串。
阅读全文