1
|
Anonymous Creator · 技术社区 · 7 年前 |
![]() |
1
2
假设您最多有2个数字块,每个数字最多为10位,我为您创建了一个这样的示例clr udf(dbproject-sql clr database project):
注意:SQL Server 2012(2017年有严格的安全问题需要您处理)。
输出:
|
![]() |
2
1
我提出了另一个解决方案,它非常紧凑,而且更一般:
|
![]() |
3
0
也就是说,一个解决方法是使用基本的字符串操作来提取两个您希望用于排序的组件。请注意,我们必须将它们强制转换为数字,否则它们将无法作为文本正确排序。 从条目 charindex('shd_uu',entry)+4, 否则1结束; e查询中的条目,用于排序等,然后考虑将它们存储在单独的真实列中。
Demo
|
![]() |
4
0
您可以使用计数表/数字表来获取每个字符,只查找数字,然后组合数字以形成字符串(可以强制转换为bigint)。然后您可以根据这个字符串进行订购。
|
![]() |
5
0
然后将其用作下一个:
|
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 6 月前 |
![]() |
Marc Guillot · 记录值时忽略冲突 6 月前 |
![]() |
Fachry Dzaky · 正确使用ROW_NUMBER 6 月前 |
![]() |
TriumphTruth · 从满足特定条件的数据集中选择1行 6 月前 |