SQL,用case when写,当一个混合字符串中包含一个连续的18位数字则输出这个18位数字,没有的话输出无数据
时间: 2024-10-23 19:20:01 浏览: 15
sql 判断字符串中是否包含数字和字母的方法
在SQL中,你可以使用`CASE`语句和`LIKE`或者正则表达式来实现这个需求。这里是一个例子,假设我们有一个名为`your_column`的列:
```sql
SELECT
CASE
WHEN `your_column` SIMILAR TO '%[0-9]{18}%'
THEN `your_column`
ELSE '无数据'
END AS eighteen_digit_result
FROM your_table
```
在这个查询中,`SIMILAR TO`模式匹配会查找字符串中是否有连续的18个数字。如果有,则返回原字符串;如果没有,则返回'无数据'。
如果你的数据库不支持`SIMILAR TO`,可以考虑使用`REGEXP`函数,但这取决于你的数据库版本和对正则表达式的支持程度:
```sql
SELECT
CASE
WHEN REGEXP_LIKE(`your_column`, '\b\d{18}\b')
THEN `your_column`
ELSE '无数据'
END AS eighteen_digit_result
FROM your_table
```
在这个例子中,`\b`代表单词边界,防止匹配到非孤立的数字串。
阅读全文