0
Microsoft SQL Serverの特定の列からスペースを除くすべての特殊文字と数字を削除するにはどうすればよいですか?列から特殊文字と数字を削除する
Microsoft SQL Serverの特定の列からスペースを除くすべての特殊文字と数字を削除するにはどうすればよいですか?列から特殊文字と数字を削除する
上記のリンクはすべてこれを解決するためにループを使用しています。この種のもののためのループに頼る必要はありません。代わりに、集計表を使用することができます。このようなシステムでは、集計表をビューとして保持します。
create View [dbo].[cteTally] as
WITH
E1(N) AS (select 1 from (values (1),(1),(1),(1),(1),(1),(1),(1),(1),(1))dt(n)),
E2(N) AS (SELECT 1 FROM E1 a, E1 b), --10E+2 or 100 rows
E4(N) AS (SELECT 1 FROM E2 a, E2 b), --10E+4 or 10,000 rows max
cteTally(N) AS
(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM E4
)
select N from cteTally
GO
ここで、その集計をセットとして活用できます。これは、ループベースのソリューションよりもはるかに高速です。
create function GetOnlyCharacters
(
@SearchVal varchar(8000)
) returns table as return
with MyValues as
(
select substring(@SearchVal, N, 1) as number
, t.N
from cteTally t
where N <= len(@SearchVal)
and substring(@SearchVal, N, 1) like '[a-z]'
)
select distinct NumValue = STUFF((select number + ''
from MyValues mv2
order by mv2.N
for xml path('')), 1, 0, '')
from MyValues mv
"_special character_"を定義してください。数字は0〜9か、またはUnicodeが数字として分類しているものは何ですか? – Arminius
azからの文字のみが – baraka
である必要があります。SQL Server内で実行する必要がある場合は、https://stackoverflow.com/questions/21378193/regex-pattern-inside-sql-replace-functionを参照してください。これは、 ... カラムのデータをエクスポート、クリーニング、再インポートすることで、入力データの検証と既存データのクリーンアップをお勧めします。 – Arminius