diff --git a/apps/expertproducts/views.py b/apps/expertproducts/views.py
index 93ac9c1..189078d 100644
--- a/apps/expertproducts/views.py
+++ b/apps/expertproducts/views.py
@@ -849,11 +849,15 @@ class CreatorSQLSearchAPI(APIView):
return Response(response_data)
def _extract_sql(self, text):
- # 先去除 ... 内容
import re
- text = re.sub(r".*?\s*", "", text, flags=re.DOTALL)
- # 再提取SQL语句
- match = re.search(r"select[\s\S]+?;", text, re.IGNORECASE)
+ # 优先提取```sql ... ```代码块
+ codeblock = re.search(r"```sql\s*([\s\S]+?)\s*```", text, re.IGNORECASE)
+ if codeblock:
+ sql = codeblock.group(1).strip()
+ return sql
+ # 回退:匹配以SELECT开头,后面跟任意内容(多行)
+ match = re.search(r"(?i)(SELECT[\s\S]*)", text)
if match:
- return match.group()
+ sql = match.group(1).strip()
+ return sql
return text.strip()