3

SQL Server ストアド プロシージャを使用してデータ インポートを行っています。データ形式は次のようになります。

A7(5)B666

「5」は変数で、複数のデジタル #、つまり 10、123、... の可能性があります。

「666」も変数です。これはテキスト文字列で、各文字は '6' ですが、666666、66、6、66666666666 のように '6' の任意の # を持つことができます。

他の部分は、A7()B固定されています。

SPでこれを検証する簡単な方法はありますか? 部分文字列を使用して文字列を解析できましたが、#. SQLサーバーで正規表現に似た方法はありますか? LIKE演算子を使用できますか? WHEREin句以外の使い方が見つかりませんでした。

ありがとう

4

1 に答える 1

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
于 2013-07-05T03:58:06.233 に答える