【发布时间】:2014-11-14 14:32:25
【问题描述】:
当我选择时,会显示一列。
我有一个下面的示例代码
C*12:03:01:01
C*12:03:01:02
C*12:03:06
C*12:109
C*12:110
C*12:111
C*12:23
应该有:分隔符。
并且在排序时应该对每个级别进行排序
例如第一级 12 都是一样的,所以排序是一样的 第二级 03, 03, 23, 109, 110,111 类似数字,然后是第三级 ...
所以应该如下所示
C*12:03:01:01
C*12:03:01:02
C*12:03:06
C*12:23
C*12:109
C*12:110
C*12:111
我已尝试删除所有字符并仅显示具有以下功能的数字
CREATE FUNCTION [dbo].[fn_StripCharacters]
(
@String NVARCHAR(MAX),
@MatchExpression VARCHAR(255)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
SET @MatchExpression = '%['+@MatchExpression+']%'
WHILE PatIndex(@MatchExpression, @String) > 0
SET @String = Stuff(@String, PatIndex(@MatchExpression, @String), 1, '')
RETURN @String
END
当我尝试时
select dbo.fn_StripCharacters(DATA.AlleleName, '^0-9')
from @temp
where CAST(dbo.fn_StripCharacters(DATA.AlleleName, '^0-9') AS INT)
然后它会显示
1223
12109
12110
12111
120306
12030101
12030102
所以我改变主意每个级别(由 : 分隔)最多只有 3 个字符。
你们知道制作方法吗
012:003:001:001
012:003:001:002
012:003:006:000
012:109:000:000
012:110:000:000
012:111:000:000
012:023:000:000
然后,如果我删除 : 并进行排序,它可能会起作用。
你们有什么更好的主意吗?谢谢!
【问题讨论】:
标签: sql-server tsql sorting delimiter natural-sort