如何在SQL Server中验证字符串格式

时间:2013-07-05 00:32:38

标签: sql-server sql-server-2008

我正在使用sql server存储过程进行数据导入。数据格式如下:

  

A7(5)B666

'5'是变量,它可以是多个数字#,即10,123 ...... ....

'666'也是一个变量。它是一个文本字符串,每个字符都是'6',但可以有#6',即666666,66,6,66666666666。

其他部分,A7()B已修复。

有一种简单的方法可以在SP中验证这一点吗?我可以使用子字符串解析字符串,但它似乎太复杂了,因为我必须验证#。在sql server中是否有类似于正则表达式的方法?我可以使用LIKE运营商吗?除了WHERE子句之外,我找不到如何使用它。

感谢

1 个答案:

答案 0 :(得分:2)

试试这个

DECLARE @t TABLE(v VARCHAR(500))
INSERT INTO @t 
VALUES
     ('A7(5)B666'),
     ('A7(555)B66666'),
     ('A7(5ups)B666'),
     ('A7(5)B6ups66'),
     ('A7(5)B666  ')

SELECT v, 
    CASE WHEN SUBSTRING(v,CHARINDEX('(',v)+1,CHARINDEX(')',v)-CHARINDEX('(',v)-1) LIKE '%[^0-9]%' 
         THEN 0 
         ELSE 1 
    END isNumberInBrackets, 
    CASE WHEN SUBSTRING(v,CHARINDEX(')B',v)+2,DATALENGTH(v)-CHARINDEX('(',v)-1) LIKE '%[^0-9]%' 
         THEN 0 
         ELSE 1 
    END isNumberAfterB
FROM @t