次のフィールドとエントリがある場合、最後の4文字に数字以外の文字が含まれる3つのエントリを見つけるにはどうすればよいですか?
Field1
------
MA1234
DC4567
OHABCD
CAWXYZ
FLLMNO
MI9876
Right
とLike "[A-Z]*"
の組み合わせになると思いますが、うまくいきRight([Field1], 4) = Like "[A-Z]*"
ません。
編集:最後の4文字のいずれかが数値以外のエントリを探しています。
ありがとう!
次のように、最後の4文字を取得して、一度に1文字ずつ比較できます。
WHERE RIGHT(Field1, 4) LIKE '[A-Z][A-Z][A-Z][A-Z]'
この例がSQL2008にあることは知っていますが、これも同様にそれを示すSQLFiddleです。
編集:
少なくとも1つの非数値文字を含む(つまり、すべて0〜9ではない)フィールドが必要な場合は、非数値値(LIKE '*[^0-9]*'
)を検索し、4文字すべてが数値(NOT LIKE '[0-9][0-9][0-9][0-9]'
)ではないことを確認できます。
WHERE RIGHT(Field1, 4) LIKE '*[^0-9]*' AND
RIGHT(Field1, 4) NOT LIKE '[0-9][0-9][0-9][0-9]'
答えは次のとおりです。
SELECT *
FROM
(
VALUES
('MA1234'),
('DC4567'),
('OHABCD'),
('CAWXYZ'),
('FLLMNO'),
('MI9876')
) v(Code)
WHERE Code like '*[A-Z][A-Z][A-Z][A-Z]'