我想使用子字符串解析文本。我们的文本格式如下:
N, Adele, A, 18
我们做的子字符串是这样的:
SUBSTRING_INDEX(SUBSTRING_INDEX(text, ',', 2), ', ', -1) as 'Name',
SUBSTRING_INDEX(SUBSTRING_INDEX(text, ',', 4), ', ', -1) as 'Age',
我们得到的输出是:
| Name | Age |
| Adele | 18 |
但是我们想将文本格式更改为:
N Adele, A 18
正确的语法是什么,我可以解析位置 1 (N Adele) 中的文本并使用分隔符空格并获取 Adele 吗?那么下一个文本(A 18)也是如此?
我尝试这样做
SUBSTRING_INDEX(SUBSTRING_INDEX(text, ' ', 1), ', ', -1) as 'Name',
但是我得到的输出只是
| Name |
| N |
我希望的输出是这样的:
| Name |
| Adele |
最佳答案
这里假设你想改变原来的数据结构并且仍然能够得到结果。您将数据结构更改为:
N Adele, A 18 -- etc
由于可能有多个名称作为名称(空格分隔),我之前的示例不正确。
您可以直接用空格删除 N
和 A
,因为知道它们只会有两个字符长并且它们将始终存在,就像这样:
SUBSTRING(TRIM(SUBSTRING_INDEX(`text`, ',', 1)), 3) AS 'Name',
SUBSTRING(TRIM(SUBSTRING_INDEX(`text`, ',', -1)), 3) AS 'Age'
获取:
Name | Age
--------------------
Adele | 18
关于mysql - 在mysql中使用子字符串解析文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25297424/