SQLSEVER 2005 sql 정렬 정 답(크기 에 따라 정렬)
이 문 제 를 해결 하기 위해 Insus.NET 은 함 수 를 써 서 이후 의 확장 을 편리 하 게 할 수 있 습 니 다.만약 에 수치 가 TB 나 더 높 을 때 이 함수 만 바 꾸 면 됩 니 다
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[udf_OrderLimitSize]
(
@Ov NVARCHAR(30)
)
RETURNS decimal(18,6)
AS
BEGIN
-- 2 NULL
IF (LEN(@Ov) <= 2)
RETURN NULL
--
DECLARE @v DECIMAL(18,6),@n DECIMAL(18,6)
--
IF (RIGHT(@Ov,2) NOT IN ('TB','GB','MB','KB'))
RETURN NULL
-- , DECIMAL
SET @n = CONVERT(DECIMAL(18,6),LEFT(@Ov, LEN(@Ov) - 2))
-- , ISNUMERIC , NULL
IF (ISNUMERIC(@n) = 0)
RETURN NULL
-- , ,
IF (@Ov LIKE '%TB')
SET @v = @n * 1024 * 1024 * 1024
IF (@Ov LIKE '%GB')
SET @v = @n * 1024 * 1024
IF (@Ov LIKE '%MB')
SET @v = @n * 1024
IF (@Ov LIKE '%KB')
SET @v = @n
RETURN @v
END
다음은 이 함 수 를 응용 하기 위해 예 를 들 면
CREATE TABLE test(id int identity(1,1),size NVARCHAR(50))
GO
INSERT INTO [test] values('23.5mb'),('10gb'),('12.7mb'),('8GB')
go
SELECT [id],[size] FROM test ORDER BY [dbo].[udf_OrderLimitSize]([size])
실행 결과:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 웹 페이지 기반 sql 2005 데이터베이스sql 구문 public List findPageing(String MemberID,int maxPageSize,int startPage,int status){...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.