自然語言轉 SQL(附校驗)
想查數據但不想手寫 SQL,或者不確定寫得對不對。
提示詞長度
163
tokens
建議模型
V4 Pro
單次成本(離峰)
$0.00020
Flash
跑一萬次
$2.04
Flash 離峰
提示詞全文
把下面的問題轉成 SQL。
資料庫:{{MySQL / PostgreSQL / SQLite}}
表結構:
```
{{建表語句或欄位說明}}
```
問題:{{想查什麼}}
輸出:
1. SQL 語句(格式化,每行不超過 80 字元)
2. 逐行解釋這段 SQL 在做什麼
3. 三個「可能寫錯的地方」(例如 NULL 處理、重複計算、時區)
4. 一個用來驗證結果合理性的檢查查詢(例如總數、抽樣)
要求:
- 不要用我表結構裡沒有的欄位
- 涉及時間時說明是按哪個時區
- 如果需要額外索引才不會慢,指出來
為什麼這樣寫
- 要求「可能寫錯的地方」是這個 prompt 的核心價值 —— SQL 錯通常不是語法錯,而是 NULL、重複、時區。
- 附一個驗證查詢,讓你能快速判斷結果是否合理,而不是盲目相信。
- 指定時區,避免跨時區統計出現無法解釋的偏差。
成本
按上面這段提示詞估算(輸入 163 tokens、輸出 300 tokens)。輸出長度依任務而定,實際會有差異。
| 模型 | 單次(高峰) | 單次(離峰) | 1 萬次(高峰) | 1 萬次(離峰) |
|---|---|---|---|---|
| DeepSeek Flash | $0.00041 | $0.00020 | $4.09 | $2.04 |
| DeepSeek V4 Pro | $0.00140 | $0.00070 | $14.03 | $7.02 |
模型建議:SQL 生成涉及對業務語意的理解,V4 Pro 出錯率明顯更低。簡單的單表查詢用 Flash 也可以。
變體
- 做報表時,追加「同時給出按日、按週、按月的三個版本」。
- 查詢很複雜時,先讓模型「用一句話說出你理解的問題」,確認後再寫 SQL。
常見失敗
- 不給表結構,模型會編造欄位名。
- 不說資料庫類型,語法細節(如日期函數)會不對。