'X' で値を置き換え私のような私のテーブルの1つのCOL持っている:に置き換えSQL Serverクエリの出力は
COL
[email protected]
[email protected]
iyara
:
COL
[email protected]
[email protected]
を私はこのような私の出力に何かをしたいです5倍の(XXXXX)と4倍の(XXXX)
'X' で値を置き換え私のような私のテーブルの1つのCOL持っている:に置き換えSQL Serverクエリの出力は
COL
[email protected]
[email protected]
iyara
:
COL
[email protected]
[email protected]
を私はこのような私の出力に何かをしたいです5倍の(XXXXX)と4倍の(XXXX)
これが、これはあなたが後にしている何を達成していること、それを行うには良い方法はおそらくあります:
DECLARE @email NVARCHAR(50) = '[email protected]';
SELECT LEFT(@email, 1) + REPLICATE('X',
LEN(SUBSTRING(@email, 2,
CHARINDEX('@', @email) - 1)))
+ SUBSTRING(@email, CHARINDEX('@', @email), LEN(@email));
-- Result: [email protected]
これは、オンラインドキュメントによると、SQL Server 2008ので始まりREPLICATE()方法を、使用していますが、 。
REPLICATE(のTransact-SQL)
繰り返しA指定された回数だけ文字列値を返します。この中
REPLICATE (string_expression ,integer_expression)
ありがとう!それは期待どおりの出力を与えています。 –
と 'キラは' それはだ試し
select substring('[email protected]',1,1) + REPLICATE('x',charindex('@','[email protected]')) + SUBSTRING('[email protected]',charindex('@','[email protected]'),200)
変更列で、電子メールまたはものは何でもあなたが
SELECT LEFT(col, 1) + RIGHT('xxxxxxxxxxxxxxxx', CHARINDEX('@', col) - 2) +
SUBSTRING(col, CHARINDEX('@', col), LEN(col) - CHARINDEX('@', col) + 1);
説明します:
は、一例として[email protected]
を取り、私のクエリの各部分は、ここに示されています。
K LEFT(col, 1)
xxxxx RIGHT('xxxxxxxxxxxxxxxx', CHARINDEX('@', col) - 2)
@ymail.com SUBSTRING(col, CHARINDEX('@', col), LEN(col) - CHARINDEX('@', col) + 1)
あなたは最長予想される電子メール名と一致するのに十分な長x
年代の文字列でRIGHT()
の呼び出しを置き換えることができます。
declare @n nvarchar(max)
set @n='[email protected]'
select concat(substring(@n,1,1),replicate('X',len(substring(@n,2,charindex('@',@n,1)-2))),SUBSTRING(@n,charindex('@',@n),200))
あなたが最初の文字を発見したANSその後、すなわちイヤラ@ゴマ彼の手紙の残りの部分は、X」に変換されますCHARINDEX ANS部分文字列を、使用して検索されたサブストリングO助けを借りて、 'レプリケート関数を使用し、残りのidを出力します。
このコードスニペットでは、* how *と* why *の問題を解決して、あなたの投稿の品質を向上させるための問題を解決します(// meta.stackexchange.com/q/114762)。 。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –
まだ試しましたか? –
@Tannerはい私は試しましたが、私はKx @ ymail.comのような出力を1つの 'x'だけ得ることができますが、置き換えられる文字の長さに応じて 'x'値を複製します。 –
mailid、2、CHARINDEX( '@'、mailid)-2、REPLICATE( 'x'、LEN(CHARINDEX( '@'、mailid)-2)))))としてのメールアドレスfrom FROM #TT - > mailId #TTテーブルの列 –