CREATE FUNCTION dbo.GetNumberOrderString
(
@NumberString NVARCHAR(200), --待处理字符
@SplitChar NVARCHAR(10) = '-', --分隔符
@Length INT = 2 --每段的字符长度
)
RETURNS NVARCHAR(500) AS
BEGIN
DECLARE @Result NVARCHAR(500) -- 结果
SET @Result = ''
DECLARE @F INT -- 第一个分隔字符的位置
WHILE LEN(@NumberString) > 0
BEGIN
-- 取出字符串
SET @F = CHARINDEX(@SplitChar, @NumberString) --取第一个分隔串的位置
--PRINT @F
DECLARE @V NVARCHAR(100)
IF @F = 0
BEGIN
SET @V = @NumberString
--PRINT @V
SET @NumberString = ''
--PRINT @NumberString
END
ELSE
BEGIN
问题说明:在开发中经常遇到要对“1-2”、“1-15”或“1.2”、“1.15”这样的数据字段进行排序,而这样的字段不能直接通过ORDER BY的方式来排序。解决方法:通过一个用户函数将此类数据字段变成输出成直接可以排序的的字段: CREATE FUNCTION dbo.GetNumberOrderString(@Numb