使用SQL Server验证格式代码

时间:2017-03-15 14:25:30

标签: sql sql-server

我的表帐户包含属性idaccount number

id   account number
--------------------
 1   007-000068
 2   007-000069

我需要验证一个帐号,如果它采用这种格式"XXX-XXXXXXXX"X是可变的

2 个答案:

答案 0 :(得分:2)

我建议使用这种模式:

select id, accountnumber,
       (case when accountnumber like '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
             then 1 else 0
        end) as isValid

这假设您期望每个位置都有数字。

答案 1 :(得分:0)

以下应该有用(选择你需要的那个):

SELECT id, [account number]
  , IIF([account number] LIKE '___-________', 1, 0) AS IsValidStructure
  , IIF([account number] LIKE '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]', 1, 0)
      AS IsValidWithOnlyDigits
FROM TableName

有关更多说明,请查看有关可能的通配符的官方文档:https://msdn.microsoft.com/en-us/library/ms179859.aspx

注意: IIF子句可从SQL Server 2012获得。对于较低版本CASE应该像 Gordon Linoff 一样使用它他的回答。