有一串字符,组合方式是型号:两位字符的英文、几位字符数字,符号-,几位字符数字,符号|||,,例如型号:gp100-35|||旧设备,用SQL将它只保留型号:后且符号|||前的部分,例如gp100-35,且讲小写英文全部调整为大写,去除中间的符号-,输出例如
时间: 2024-12-18 22:31:18 浏览: 10
在SQL中,处理这种字符串并提取指定部分可以使用一些字符串函数。假设你的表名为`devices`,并且有一个字段`model`存储了这样的型号信息,你可以使用以下查询:
```sql
SELECT REPLACE(
SUBSTRING_INDEX(model, ' ', -2),
'-', '',
CHAR_LENGTH(model) - LENGTH(REPLACE(model, '|', '')) + 3
) AS processed_model
FROM devices
WHERE model LIKE '%-%|%|%'
```
这个查询的工作原理是:
1. `SUBSTRING_INDEX(model, ' ', -2)` 会获取从最后一个空格到字符串结尾的所有内容(即型号部分),去掉最后两个空格。
2. `REPLACE(model, '-', '')` 删除所有'-'字符。
3. `CHAR_LENGTH(model) - LENGTH(...)` 计算剩余符号'|'的数量,因为每个'|'减少一次长度。
4. `+ 3` 补充丢失的'-',因为我们删除了一个'-'。
注意,这个查询假设型号始终以'-'分隔字母和数字,然后以连续的'('|'|'|')结束。如果输入格式稍微变化,可能需要调整正则表达式匹配或替换部分。
阅读全文