> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL 的 vsql_luhn 扩展

> 社区扩展 vsql_luhn 在 MySQL 中验证并生成 Luhn 校验位，适用于卡号、IMEI 码、条形码和类似的标识符。

卡号、IMEI 码和加拿大社会保险号都带有 Luhn 校验位，而输错一位数字
是手动输入的标识符出错的最常见方式。`vsql_luhn` 检查并生成该校验位，
因此 `CHECK` 约束可以在错误的号码写入行之前拒绝它。

| | |
| - | - |
| **维护者** | [Anurag Ojha](https://github.com/intojhanurag) |
| **源代码和文档** | [intojhanurag/vsql-luhn](https://github.com/intojhanurag/vsql-luhn) |
| **许可证** | GPL-2.0 |

> [!NOTE]
>
> 此扩展由第三方编写和维护。VillageSQL 不构建、测试或发布它，
> 下面的描述遵循维护者自己的文档。在依赖它之前，请先阅读该文档。

## 安装

针对 VillageSQL 构建树（`VillageSQL_BUILD_DIR`）从存储库构建它，将 `.veb` 文件复制到服务器的 `veb_dir` 中，然后安装它：

```sql theme={null}
INSTALL EXTENSION vsql_luhn;
```

## 新增内容

| 函数 | 返回 | 作用 |
| - | - | - |
| `luhn_valid(value)` | 整数 | 字符串通过校验和时为 1，否则为 0。空白和连字符会被忽略，非数字文本返回 0 而不是报错 |
| `luhn_checkdigit(partial)` | 文本 | 为不完整的标识符追加正确的校验位 |

由于 `luhn_valid` 对非数字文本返回 0 而不是失败，它可以直接用在
针对未经验证输入列的 `WHERE` 子句中。

## 另请参阅

* [可用扩展](https://villagesql.com/docs/zh/extensions/catalog) — 完整目录
* [intojhanurag/vsql-luhn](https://github.com/intojhanurag/vsql-luhn) — 源代码、示例和已知限制


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.