sql中只保留字符串中的数字
时间: 2024-10-09 17:04:00 浏览: 41
在SQL中,如果你想要从字符串字段中提取出所有的数字,可以使用正则表达式或者一些特定函数。这里有一些方法:
1. **`REGEXP_REPLACE()` 函数** (MySQL, PostgreSQL):
```sql
SELECT REGEXP_REPLACE(your_column, '[^0-9]+', '') AS numeric_string
FROM your_table;
```
这会移除所有非数字字符。
2. **`REPLACE()` 函数** (SQL Server):
```sql
SELECT REPLACE(your_column, ' ', '') AS numeric_string
FROM your_table;
```
首先替换空格,然后你可以通过其他条件过滤出纯数字的行。
3. **`PATINDEX()` 函数** (SQL Server):
```sql
SELECT SUBSTRING(your_column, PATINDEX('%[0-9]%', your_column), LEN(your_column)) AS numeric_string
FROM your_table;
```
这里找到第一个数字开始的位置并截取到结尾。
4. **`TRIM()` 和 `CAST()`** (Oracle or SQL Server):
```sql
SELECT CAST(TRIM(leading ' ' from your_column) AS NUMBER) AS numeric_value
FROM your_table
WHERE TRIM(leading ' ' from your_column) LIKE '%[0-9]%';
```
先移除首尾空格,然后检查是否含有数字。
记得替换 `your_column` 和 `your_table` 为实际的列名和表名。如果需要保留小数点,可以调整正则表达式或搜索模式。
阅读全文