# 自定义函数

URL: https://caijiao.org/sqlite/advanced/udf
Source: docs/sqlite/advanced/udf.md
Description: 本章节介绍如何在 SQLite 中创建和使用自定义函数，扩展 SQLite 的功能以满足特定业务需求。

[SQLite](/sqlite/) 支持通过编程语言（如 C、Python、Node.js）注册自定义函数，增强查询能力。除了自定义函数，你还可以了解 [触发器](/sqlite/advanced/triggers) 和 [全文搜索](/sqlite/advanced/fts) 等高级功能。

## 在 SQLite 命令行中无法直接创建自定义函数，但可以通过接口实现。

## Python 示例

```python
import sqlite3

def reverse_string(s):
    return s[::-1]

conn = sqlite3.connect('example.db')
conn.create_function("reverse", 1, reverse_string)

cursor = conn.cursor()
cursor.execute("SELECT reverse('SQLite')")
print(cursor.fetchone()[0])  # 输出: etilQS
```

## Node.js 示例

使用 `sqlite3` 库时，也可以注册自定义函数：

```js
const sqlite3 = require("sqlite3").verbose();
const db = new sqlite3.Database("example.db");

db.create_function("reverse", (s) => s.split("").reverse().join(""));

db.all("SELECT reverse('SQLite') AS reversed", (err, rows) => {
  console.log(rows[0].reversed); // 输出: etilQS
});
```

自定义函数可实现复杂计算和特殊逻辑，提升 SQLite 灵活性。

// ... existing code ...
