了解查询以删除非数字字符

时间:2017-01-24 19:18:59

标签: sql sql-server tsql

我发现非常有用的帖子,如何从字符串中删除非数字字符: https://stackoverflow.com/a/18635337/6216435

但很少有人提出问题,希望有人可以解释一下 1)为什么要使用它:

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

结果给出数字1-100,但为什么@@ spid和sys.all_columns?有没有更好的方法呢?

2)..where N<=datalength(DirtyCol)) [1] where C between '0' and '9' - [1]代表什么?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

答案是使用@@spid作为常量值,类似于order by (select)`

仅使用sys.all_columns作为100行的源来生成行号。

以下是一些文章,其中Aaron Bertrand对生成集合或序列的替代方法进行了基准测试:


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