如何使用 MySQL Workbench 查找字符串中多次出现的子字符串?
How can I find multiple occurrences of a substring within a string using MySQL Workbench?
我正在尝试编写的查询(使用 MySQL Workbench)需要搜索一个文本字段和 return 在其中出现的所有 "placeholder" 子字符串文本字段。
我正在搜索的文本实际上是一个包含占位符的文档,我想查看其中所有占位符的列表。每个占位符都有不同的值,但由特殊字符(例如 |^ ... ^|)分隔。
我遇到的问题是我无法在 Workbench 中进行循环或递归来搜索文本字段,因此我需要一些其他方法来搜索它。我尝试过的所有 MySQL 函数(例如 locate() )仅 return 第一次出现子字符串(或其位置)。
如果我的文本字段是:
"blah blah blah |^123^| blah blah blah |^456^| blah blah blah |^789^| blah"
我想看:
占位符
--------------
123
456
789
根据我的评论,MySQL 不是最适合此类任务的。也就是说,这里有一些事情需要考虑...
SET @string = "blah blah blah |^123^| blah blah blah |^456^| blah blah blah |^789^| blah";
SELECT * FROM ints;
+---+
| i |
+---+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+---+
SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(@string,'\|\^',i+1),'\|\^',-1),'^|',1) x
FROM ints i;
+-----------------+
| x |
+-----------------+
| blah blah blah |
| 123 |
| 456 |
| 789 |
+-----------------+
我正在尝试编写的查询(使用 MySQL Workbench)需要搜索一个文本字段和 return 在其中出现的所有 "placeholder" 子字符串文本字段。
我正在搜索的文本实际上是一个包含占位符的文档,我想查看其中所有占位符的列表。每个占位符都有不同的值,但由特殊字符(例如 |^ ... ^|)分隔。
我遇到的问题是我无法在 Workbench 中进行循环或递归来搜索文本字段,因此我需要一些其他方法来搜索它。我尝试过的所有 MySQL 函数(例如 locate() )仅 return 第一次出现子字符串(或其位置)。
如果我的文本字段是:
"blah blah blah |^123^| blah blah blah |^456^| blah blah blah |^789^| blah"
我想看:
占位符
--------------
123
456
789
根据我的评论,MySQL 不是最适合此类任务的。也就是说,这里有一些事情需要考虑...
SET @string = "blah blah blah |^123^| blah blah blah |^456^| blah blah blah |^789^| blah";
SELECT * FROM ints;
+---+
| i |
+---+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+---+
SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(@string,'\|\^',i+1),'\|\^',-1),'^|',1) x
FROM ints i;
+-----------------+
| x |
+-----------------+
| blah blah blah |
| 123 |
| 456 |
| 789 |
+-----------------+