我尝试编写的查询(使用MySQL Workbench)需要搜索文本字段并返回所有出现的"占位符"文本字段中的子字符串。
我搜索的文本实际上是一个包含占位符的文档,我希望看到其中所有占位符的列表。每个占位符都有不同的值,但它由特殊字符划分(例如| ^ ... ^ |)。
我遇到的问题是我无法在Workbench中进行循环或递归来搜索文本字段,因此我需要一些其他方法来搜索它。我尝试过的所有MySQL函数(例如locate())只返回第一次出现的子字符串(或者它的位置)。
如果我的文本字段是:
" blah blah blah | ^ 123 ^ |等等等等等等| ^ 456 ^ |等等等等等等| ^ 789 ^ |嗒嗒"
我想看看:
占位符
----------------
123
456个
789
答案 0 :(得分:0)
根据我的评论,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 |
+-----------------+