SQL表达式片段,用于从字符串Borehole_no中提取数字部分并转换为整数如C100-3、C10并以此排序
时间: 2024-12-13 20:15:39 浏览: 15
在SQL中,处理字符串并从中提取数字部分可以使用正则表达式或者函数结合一些字符串操作。假设我们使用的是MySQL,可以使用`REGEXP_SUBSTR()`函数来提取数字,并通过`TRIM()`去掉前后的非数字字符,然后将结果转换为整数。这里是一个示例:
```sql
SELECT
CAST(
TRIM(LEFT(Borehole_no, INSTR(Borehole_no, '-') - 1))
AS SIGNED
) AS digit_int
FROM
your_table_name
ORDER BY
digit_int;
```
这个查询的工作原理如下:
1. `TRIM(LEFT(Borehole_no, INSTR(Borehole_no, '-') - 1))`:从字符串开始查找第一个"-"的位置,减一是因为我们要取到前面的数字部分,`TRIM`去除两侧的空格。
2. `CAST...AS SIGNED`:将提取的字符串转换为整数类型。如果字符串包含负号,这会解析为负数。
注意:这个例子假设"Borehole_no"列中的数字总是跟在一个"-"之前,如果不是,你可能需要调整正则表达式的模式匹配。
相关问题
SQL表达式片段,用于从字符串Borehole_no中提取数字部分并转换为整数C100-3
SQL表达式片段通常涉及数据库查询的语言结构,对于从字符串中提取数字的部分并转换为整数,你可以使用正则表达式或者特定函数,取决于使用的SQL方言。这里是一个基本示例,假设你使用的是MySQL:
```sql
SELECT CAST(
SUBSTRING_INDEX(Borehole_no, '-', -1) AS SIGNED
) AS C100_3
FROM your_table;
```
在这个例子中:
- `SUBSTRING_INDEX` 函数用于获取从字符串尾部开始到某个字符(这里是'-')的所有内容,这里提取的是"100-3"这部分。
- `CAST` 函数将结果转换为整数类型。
如果你使用的是其他SQL如PostgreSQL,语法可能会有所不同,例如使用`substring`函数和`to_number`函数:
```sql
SELECT to_number(
substring(Borehole_no from 'C([0-9]+)-[0-9]+$') as C100_3,
'999'
) FROM your_table;
```
请注意,实际使用时需要根据你的数据库管理系统检查正确的函数和语法。
sql将变量结果保存到新表中
在SQL中,如果你想将一个变量存储的结果(通常是查询结果集)保存到一个新的表中,可以使用 `INSERT INTO` 语句结合 `EXEC` 或者动态SQL。例如:
```sql
SET @sql = CONCAT('SELECT * INTO NewTableName FROM (', @chvnTSQL, ') AS tempTable');
EXEC(@sql);
```
这里假设 `@chvnTSQL` 包含了一个查询,我们将其结果插入到名为 `NewTableName` 的新表中。`CONCAT` 函数用于拼接字符串,将原始查询嵌套到新的 `INSERT INTO` 语句中。
如果你的系统支持直接创建表并立即插入数据,还可以使用 `CREATE TABLE` 和 `UNION ALL` 或者 `INSERT INTO SELECT` 直接完成:
```sql
CREATE TABLE IF NOT EXISTS NewTableName AS
SELECT * FROM (EXEC (@chvnTSQL)) AS result;
```
或者
```sql
CREATE TABLE NewTableName AS
SELECT * FROM (
SELECT * FROM #tmpMiddleTable
GROUP BY Borehole_no
) AS result;
```
这里假设 `#tmpMiddleTable` 已经存在。
阅读全文