如何在MySQL Workbench 8.0中去除指定符号后的字符?
MySQL 8.0 移除指定符号后的所有字符实现方案
MySQL 8.0完全支持你需要的字符串处理需求,可以通过组合内置字符串函数实现。以下是具体的实现方法:
核心逻辑
找到字符串中-、(、[三个符号里最先出现的位置,截取该位置之前的内容,同时处理没有这些符号的场景(直接返回原字符串)。
实现代码
SELECT original_str, COALESCE( TRIM(SUBSTRING( original_str, 1, LEAST( NULLIF(LOCATE('-', original_str), 0) - 1, NULLIF(LOCATE('(', original_str), 0) - 1, NULLIF(LOCATE('[', original_str), 0) - 1 ) )), original_str ) AS processed_str FROM ( VALUES ('Organic Rice Sticks - Spinach'), ('Organic Rice Sticks (Pack of Three)'), ('Organic Rice Sticks [Pack of Three]'), ('Plain Organic Rice Sticks') -- 无目标符号的测试用例 ) AS test_data(original_str);
函数说明
LOCATE(symbol, str):返回目标符号在字符串中的起始位置,符号不存在时返回0。NULLIF(val, 0):将0转换为NULL,让后续的LEAST()函数忽略不存在的符号位置。LEAST(a, b, c):取三个有效位置中的最小值,即最先出现的符号位置,减1后得到截取的终点。SUBSTRING(str, 1, pos):从字符串开头截取到指定位置的内容。TRIM():去除截取后内容末尾可能残留的空格(比如符号前的空格)。COALESCE(val1, val2):如果截取结果为NULL(即字符串中无目标符号),则返回原字符串。
执行结果
上述代码运行后会输出:
| original_str | processed_str |
|---|---|
| Organic Rice Sticks - Spinach | Organic Rice Sticks |
| Organic Rice Sticks (Pack of Three) | Organic Rice Sticks |
| Organic Rice Sticks [Pack of Three] | Organic Rice Sticks |
| Plain Organic Rice Sticks | Plain Organic Rice Sticks |
内容的提问来源于stack exchange,提问作者beth_9
相关产品推荐
相关产品推荐

