我想在column中只打印字符串的一部分,而忽略其余的东西,包括特殊字符,我该如何实现呢
| A | B |
| -------- | -------------- |
| abc | zet=kadala; |
| def | zet=kade; None |
| de | zet=kad; None:81 |
已尝试SUBSTRING_INDEX(B,'=',-1)作为B
期望产量
| A | B |
| -------- | -------------- |
| abc | kadala |
| def | kade |
| de | kad |
3条答案
按热度按时间iezvtpos1#
如果你想走
SUBSTRING_INDEX()
路线,那么你需要调用它 * 两次 *:在MySQL 8+上,你也可以使用regex替换:
js81xvg62#
可以使用SUBSTRING_INDEX()函数从列B中提取所需的子字符串。SUBSTRING_INDEX()函数返回指定分隔符之前或之后的字符串的子字符串。
下面是一个示例SQL查询,它应该会给予你预期的输出:
在上面的查询中,我们使用两个嵌套的SUBSTRING_INDEX()函数从列B中提取所需的子字符串。
内部的SUBSTRING_INDEX()函数返回最后一个'='字符出现后的子字符串,它在第一行中给出'kadala',在第二行中给出'kade',在第三行中给出'kad'。
外部SUBSTRING_INDEX()函数返回第一次出现';' character,它删除' kadala '、' kade '和' kad '之后的剩余字符。
注意:将'your_table_name'替换为表的实际名称。
ctzwtxfj3#
提取B列中“=”字符后的子字符串并移除分号(;)后的任何附加字符),则可以使用SUBSTRING_INDEX函数两次。
下面是一个应该实现预期输出的示例SQL查询:
此查询将选择列A和列B的一个子字符串,该子字符串从最后一次出现的“=”字符开始,到第一次出现的“=”字符结束;'字符。TRIM函数用于从结果字符串中删除任何前导或尾随空格。
这个查询的输出应该是一个新表,在B列中只包含所需的子字符串。