23

の列ですべての特殊文字の出現を見つける必要がありますSQL Server 2008。だから、私は気にしませんA, B, C ... 8, 9, 0が、気にします!, @, &,、など。

私の考えでは、そうするための最も簡単な方法は除外することA, B, C, ... 8, 9, 0ですが、それらを除外するステートメントを書いた場合、とを持っていたエントリを見逃してしまい!ますASELECTしたがって、すべての非アルファベット/非数字文字のリストを取得してから、aLIKEWildcard修飾子 を指定してaを実行する必要があるように思われます。

これが私が実行するものです:

SELECT Col1
FROM TABLE
WHERE Col1 LIKE ('!', '@', '#', '$', '%'....)

ただし、複数の修飾子を実行できるとは思いませんか?これを達成する方法はありますか?

4

4 に答える 4

40

ネガティブはここであなたの友達です:

SELECT Col1
FROM TABLE
WHERE Col1 like '%[^a-Z0-9]%'

これは、任意の数の文字、次にセットa-Z0-9にないCol11つの文字、そして任意の数の文字で構成される行が必要であることを示しています。

大文字と小文字を区別する照合を行う場合は、大文字と小文字の両方を含む範囲を使用することが重要ですA。これaは、私が指定したものです(元々、間違った方法でした。前に来る。後に来る)ZzaAZz


または、別の言い方をすれば、オリジナルWHEREを次のように書くことができます。

Col1 LIKE '%[!@#$%]%'

ただし、観察したように、に含めるすべての文字を知っている必要があります[]

于 2012-10-15T14:37:35.560 に答える
4

次のTransactSQLスクリプトは、すべての言語(国際)で機能します。解決策は、英数字をチェックするのではなく、特殊文字が含まれていないことをチェックすることです。

DECLARE @teststring nvarchar(max)
SET @teststring = 'Test''Me'
SELECT 'IS ALPHANUMERIC: ' + @teststring
WHERE @teststring NOT LIKE '%[-!#%&+,./:;<=>@`{|}~"()*\\\_\^\?\[\]\'']%' {ESCAPE '\'}
于 2017-04-19T09:54:51.387 に答える
3
Select * from TableName Where ColumnName LIKE '%[^A-Za-z0-9, ]%'

これにより、特殊文字を含むすべての行が表示されます。

于 2018-02-23T17:56:23.340 に答える
1
select count(*) from dbo.tablename where address_line_1 LIKE '%[\'']%' {eSCAPE'\'}
于 2019-04-18T16:53:23.517 に答える