2012-02-17 13 views
3

各列で、最初の5文字の後に、次の5文字を​​ '*'で追加/置換し、さらに10個の空白を追加する必要があります。selectステートメントを使用していくつかの文字の後に後続スペースを追加する方法は?

SELECT nameFirst, nameLast, number, fax 
FROM table_01 

期待される結果: -

Revol*****   Jenni*****   598-1*****   12345*****  
Jenit*****   Austi*****   598-1*****   12345*****   
Revol*****   Jenni*****   598-1*****   12345***** 

感謝。

+0

好奇心が強い。どうして? – JohnFx

+0

bcpユーティリティを使用してテキストファイルをエクスポートする。ファイルをフォーマットし、実際の情報を隠す必要があります。 – User13839404

+0

列の値が5文字未満の場合は、何を出力しますか? – HABO

答えて

4

これはそれを行う必要があります。

SELECT 
    LEFT(nameFirst,5) + REPLICATE('*',5) + SPACE(10), 
    LEFT(nameLast,5) + REPLICATE('*',5) + SPACE(10), 
    LEFT(number,5) + REPLICATE('*',5) + SPACE(10), 
    LEFT(fax ,5) + REPLICATE('*',5) + SPACE(10) 
FROM table_01 
:あなたは、この技術はより良い(と、より読みやすい)かもしれない*とスペース文字の数のため、後に変数を使用したいかもしれないと思うが、TSQLに固有のキーワードを使用している場合

SELECT 
    LEFT(nameFirst,5) + '*****   ', 
    LEFT(nameLast,5) + '*****   ', 
    LEFT(number,5) + '*****   ', 
    LEFT(fax ,5) + '*****   ' 
FROM table_01 

コメントごとに更新
<の名前には*を追加したいとします。ここでうまくいくはずのアプローチです。

SELECT 
    LEFT(nameFirst + replicate('*',5),5) + replicate('*',5) + SPACE(10) 
    ... 
FROM table_01 

これは少し卑劣ですが、長いインライン条件を回避します。

+0

ジョン。 nameFirstの長さが5文字未満の場合は、*を追加できる方法はありますか。例えば。 nameFirstが 'Mia'の場合、 'Mia *******'のような5つではなく7つの 'asteriks'を追加してください。 – User13839404

+0

ちょっとです。私はそれを処理するために私の答えを更新します。 – JohnFx

+0

「LEFT(nameFirst、5)」を「LEFT(nameFirst + '*****'、5)」に変更するだけです –

関連する問題