【发布时间】:2020-01-15 03:47:39
【问题描述】:
假设您有一个带有一些分隔符字符串的字符串数据列。
子串可以有不同的长度!
例如:
abcde@xyz
abc@vwxyz
如何将此列输出为两列,或者如果更容易只输出字符串的一部分(左侧或右侧)?
【问题讨论】:
标签: mysql sql database substring
假设您有一个带有一些分隔符字符串的字符串数据列。
子串可以有不同的长度!
例如:
abcde@xyz
abc@vwxyz
如何将此列输出为两列,或者如果更容易只输出字符串的一部分(左侧或右侧)?
【问题讨论】:
标签: mysql sql database substring
你可以使用Substring_Index()函数;它返回给定count 左侧出现给定delimiter 的子字符串。如果count 值为负数,则返回所有到分隔符右侧。
演示架构 (MySQL v5.7)
create table your_table_name(field_name varchar(255));
insert into your_table_name values('abcde@xyz');
insert into your_table_name values('abc@vwxyz');
查询 #1
SELECT
field_name,
Substring_Index(field_name, '@', 1) AS left_part,
Substring_Index(field_name, '@', -1) AS right_part
FROM your_table_name;
| field_name | left_part | right_part |
| ---------- | --------- | ---------- |
| abcde@xyz | abcde | xyz |
| abc@vwxyz | abc | vwxyz |
【讨论】:
您可以使用SUBSTRING_INDEX(str,delim,count) 完成此操作
mysql> SELECT SUBSTRING_INDEX('abcde@xyz', '@', 1);
-> 'abcde'
mysql> SELECT SUBSTRING_INDEX('abcde@xyz', '@', -1);
-> 'xyz'
来源:MySQL :: MySQL 5.7 Reference Manual :: 12.5 String Functions and Operators
【讨论】: