特定の列で使用されているすべての特殊文字の数を返すSQLクエリを検索します。列に5行あり、それぞれ2つの特殊文字が使用されているとします。私は結果として10を与えるいくつかのクエリを探しています。SQLの特殊文字のカウント
私は、だから私は使用
Select * From tablename Where Name like '%[^a-z ,-.''0-9]%'
特定の列で使用されているすべての特殊文字の数を返すSQLクエリを検索します。列に5行あり、それぞれ2つの特殊文字が使用されているとします。私は結果として10を与えるいくつかのクエリを探しています。SQLの特殊文字のカウント
私は、だから私は使用
Select * From tablename Where Name like '%[^a-z ,-.''0-9]%'
を特殊文字列を取得しようとしましたが、どのように同じテーブル内のすべてのデータベースについて、各特殊文字の数を取得する(私は同じテーブルと同じ列に10個のデータベースを持っています)数字のテーブル(CTEで作成されたバーチャル)を作成し、各キャラクターを一度に1つずつ取り出し、一致基準に一致するかどうかを確認しながらテーブルにクロス適用します。
SET UP
--Create Test Table
CREATE TABLE #Test
(
[Name] VARCHAR(50)
)
-- Insert Sample Data
INSERT INTO #Test
VALUES ('dgas-!gfsdfg'), ('d^0jdn'), (',dfsd%gfs_da')
クエリ私のデータについては
declare @match varchar(50) = '[^a-z ,-.''0-9]'
;WITH Numbers
AS
(
-- Generate Numbers table
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS N
FROM
(VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) x(n)
CROSS APPLY
(VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) y(n)
)
SELECT COUNT(*)
FROM Numbers
CROSS APPLY #Test
WHERE N < DATALENGTH(Name) + 1 -- Only need to get each character
AND SUBSTRING(Name, N, 1) LIKE @match -- does it match our expression
彼のリターン:私は、行の数は、特殊文字の数を取得するために戻った回数4
上記のテストデータでは、このようなdgas-!gfsdfg - 2行目のdgas-!gfsdfgを入れておく必要があります。この残りの2つの行のようにも – Mallikarjuna
@Mallikarjunaあなたの質問を修正し、コードでコメントの束の中にそれをドラッグしないでください。サンプルデータと希望の出力をそこに追加し、コメントを削除します。お願いします。 –
Do yすべての行の特殊文字の数、またはフィールドの1つに特殊文字を含む行の数が必要ですか? –
期待される結果を持つサンプルデータを追加 –
名前がProof_7 'Dateの場合、ここには2つの特殊文字があるので2行が必要です。最初の行名前列と特別なチャプター列は '_'で、2番目の行は '' 'シングルクォート – Mallikarjuna