2

まず、これが重複した質問である場合はお詫び申し上げます。検索に最善を尽くしましたが、うまくいきませんでした。また、キーワードに関して質問を適切に表現することさえできませんでした。

テーブルの 1 つに column がありますName (nvarchar)。特殊文字を明示的にリストせずに、どの行に特殊文字が含まれているかを調べたい。私の場合の「特殊」文字は、以下にないものを意味します。

a-z A-Z 0-9 _ @ . , ( ) % + -

たとえば、次のようになります。

Row 1: 'asdf Asdf 0123'
Row 2: 'asdf (Asdf) 012/3'
Row 3: 'zxcv [234]'
Row 4: 'asdf #0123'

行 2、3、4 を選択したい。

最も簡単な方法は、角かっこやスラッシュなど、不要な文字を含めることです。

SELECT * FROM Table
WHERE Name LIKE '%[\]\[/]%' ESCAPE '\'

これは行 2 と 3 を返します。または、NOT LIKE を使用すると、行 1 と 4 が返されます。ただし、考えもしなかった可能性のある他の文字 (# など) も検索したいと考えています。募集中のキャラクター一覧 -

SELECT * FROM Table
WHERE Name NOT LIKE '%[a-zA-Z0-9_@. ,()%+-]%'

すべての行にこれらの文字が少なくとも1つ含まれているため、0の結果が返されるため、どちらも機能しません。

後者の LIKE ステートメントを、目的の文字を含む文字列ではなく、目的の文字のみを含む文字列と一致するように制限する方法はありますか?

4

2 に答える 2