SQL Serverで三角形のように下に描画する方法は?SQL Serverで三角形を描画する方法は?
私は2つのWHILE
ループによってそれを実装したいが、私は、SQL Serverの内の1行に20「*」を印刷することはできません。
どうすればこの問題を解決できますか?
SQL Serverで三角形のように下に描画する方法は?SQL Serverで三角形を描画する方法は?
私は2つのWHILE
ループによってそれを実装したいが、私は、SQL Serverの内の1行に20「*」を印刷することはできません。
どうすればこの問題を解決できますか?
返信を中に入れてください。私はあなたが正しくそれを行う場合、あなたはあなたの希望する出力を達成することができると思いますか?
DECLARE @i INT = 20
WHILE(@i>0)
BEGIN
PRINT REPLICATE('* ', @i);
SET @i = @i - 1;
END
SQLでループの任意の種類を使用することは、それがちょうどパズルを解決する場合でも、悪い考えです。 –
これはちょうど良いプログラミングの質問です。ハビバスクリプトは良いです。実際のシナリオでは、ループやカーソルを回避することはできませんし、それを使用する上で害がない状況があります。実際には@KumarHarsh、ループとカーソルを避けることができます。 – KumarHarsh
ループが必要な場合は非常にまれです。ほとんどの場合、ループはより難しく、遅くなり、多くのブロックを引き起こします。 –
DECLARE @StrLen INT = 20
WHILE @StrLen >= 1
BEGIN
PRINT REPLICATE('*',@StrLen)
SET @StrLen = @StrLen - 1
END
あなたは文字を一定の回数を繰り返してREPLICATE
を使用することができ、これを試してみてください。 1から20までの数字のシーケンスを生成するには、とにかくWHILE
は必要ありません.SQLでは、実際にはデータを操作するのにWHILE
ステートメントは必要ありません。
ほとんどのSQL開発者がNumbers tableを作成する理由は、数字のシーケンスが常に有用なためです。
まだお持ちでない場合は、20個の数字を生成するために迅速かつ汚い方法は、システム・テーブルから上位20行を選択し、行番号などを計算するためにROW_NUMBER
を使用することです:
数字テーブルを使用すると、クエリが単純である:
select replicate('*',Number)
from dbo.Numbers
where Numbers.Number <= 20
order by Number desc
番号テーブルは、非常に有用である200日のような要素のセットのために例えば、2017年1月1日から始まる:
select dateadd(d,Number,cast('20170101' as date))
from dbo.Numbers
where Numbers.n<= 20
order by Number desc
なぜ* *任意のループを使用するのですか? SQLはループを必要としません。 Numbersテーブルをまだお持ちでない場合は、1から20までのシーケンスを生成する方法が必要です。 –
['REPLICATE'](https://docs.microsoft.com/en-us/) us/sql/t-sql/functions/replicate-transact-sql)関数 –
なぜあなたはこれをしたいですか?私に学校の割り当てのいくつかの並べ替えのように聞こえます。 – BdR