sql如何将字符串中非数字过滤
时间: 2024-10-11 22:06:46 浏览: 26
去掉前面的0的sql语句(前导零,零前缀)
SQL中有几种方法可以过滤掉字符串中的非数字字符。以下是常见的两种方式:
1. **`REGEXP_REPLACE` or `REPLACE`函数** (某些数据库系统支持):
如果你使用的是支持正则表达式的数据库,如MySQL,你可以使用`REGEXP_REPLACE`函数,如果使用的是不支持该函数的,如Oracle,则可以使用`REPLACE`函数替换非数字字符。例如:
```sql
SELECT REGEXP_REPLACE(column_name, '[^0-9]', '') AS cleaned_column
FROM table_name;
OR
SELECT REPLACE(column_name, '[^0-9]', '') AS cleaned_column
FROM table_name;
```
这里`[^0-9]`是一个正则表达式,匹配所有不是数字的字符。
2. **`TRIM`函数配合`CAST`或`TO_NUMBER`转换**:
对于那些不支持正则表达式的数据库,可以先移除前后空格,然后尝试将结果转换为数字,如果转换失败,说明原始字符串不含数字。例如在Oracle中:
```sql
SELECT CAST(TRIM(column_name) AS NUMBER) AS cleaned_column
FROM table_name
WHERE TRIM(column_name) NOT LIKE '%[^0-9]%';
```
如果转换成功,那么列的内容就是数字;反之则是空值。
阅读全文