2017-01-24 41 views
1

私は文字列から数字以外の文字を削除する方法を、非常に役立つ記事を見つける: https://stackoverflow.com/a/18635337/6216435理解クエリ数字以外の文字を削除する

しかし、いくつかの質問には、うまくいけば、誰かが少し説明することができ、生じました。

select top (100) N=row_number() over (order by @@spid) from sys.all_columns) 

結果番号1-100が、なぜ@@ SPIDとsys.all_columnsを与える:
1)なぜ、これが使用するには?それを行う良い方法はありますか?

2)..where N<=datalength(DirtyCol)) [1] where C between '0' and '9' - ここでは[1]は何を表していますか?

答えがorder by (selectに似た一定の値として@@spidを使用していることをあなたの助け:)

+0

sys.all_columnsそれは次のように使用され、メタデータを含むシステムテーブルですあなたの2番目の質問[1]はそのサブクエリのエイリアスであり、[RandomName]であったかもしれません - 暗黙的に 'as'が、SomeName'(サブクエリ)として暗黙的に' – Mihai

+0

'['と ']'はsqlの名前のまわりで使用されますerver - 何らかの理由でこの男がこのテーブルの名前を "1"にしたかったのですが、大部分はコードを読みにくくしたと思います。私は '[1]'の代わりに 'tmp'を使っていました。数字でなければ大括弧とtmpは必要ありません。 – Hogan

+0

これらの質問をその回答にコメントとして投稿する方がはるかに意味があります。 – Hogan

答えて

0

してくれてありがとう) `

行を生成するために、わずか100行のソースのsys.all_columnsを使用しています数字。ここで

はアーロン・ベルトランがセットまたはシーケンスを生成するための代替手段をベンチマークいくつかの記事です:


Generate a set or sequence without loops – part 1 - Aaron Bertrand - 2013-01-16
Generate a set or sequence without loops – part 2 - Aaron Bertrand - 2013-01-17
Generate a set or sequence without loops – part 3 - Aaron Bertrand - 2013-01-18

関連する問題