首页 > 解决方案 > 验证 6 位数字和逗号的 NVARCHAR

问题描述

我有一个看起来像这样的 NVARCHAR '123456,789123,345678'。我只想验证 6 位数字和一个逗号,如果还有其他内容(即 123E45,12345,1234 无效)则抛出错误。

我为所有想要使用 STRING_SPLIT 的人准备了 SQL Server 2008。

标签: sqlsql-servervalidationsql-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) 
           )

推荐阅读