sql - 验证 6 位数字和逗号的 NVARCHAR
问题描述
我有一个看起来像这样的 NVARCHAR '123456,789123,345678'。我只想验证 6 位数字和一个逗号,如果还有其他内容(即 123E45,12345,1234 无效)则抛出错误。
我为所有想要使用 STRING_SPLIT 的人准备了 SQL Server 2008。
解决方案
这是一种存储值的可怕方式。但让我假设你别无选择。
您可以使用蛮力方法,将like
重复数字的最大数量分开:
where not (',' + col like replicate(',[0-9][0-9][0-9][0-9][0-9][0-9]', 1) or
',' + col like replicate(',[0-9][0-9][0-9][0-9][0-9][0-9]', 2) or
',' + col like replicate(',[0-9][0-9][0-9][0-9][0-9][0-9]', 3) or
',' + col like replicate(',[0-9][0-9][0-9][0-9][0-9][0-9]', 4) or
',' + col like replicate(',[0-9][0-9][0-9][0-9][0-9][0-9]', 5)
)
推荐阅读
- exception - 提升上下文:异常传播问题
- javascript - 使用 PHP 创建我网站页面的离线版本
- c++ - 我需要解释霍夫代码的具体部分(opencv/c++)
- c# - 如何在 Unity c# 中在运行时管理 AudioSources
- javascript - 为什么尾随和前导零会导致我的函数返回我不想要的值?
- ruby-on-rails - 存储第三个 API 的 JSON 响应的最佳方式是什么?
- keras - 为什么我重新加载的模型会产生不同的预测?
- github - 使用 Gradle 源代码依赖项时如何通过 Github 进行身份验证?
- php - 计算时间范围内事物的可用性
- android - Android 应用在 Android Studio (kotlin) 上运行后无法启动活动 ComponentInfo