sql按中文数字排序

 

 

有表4张

建表和插入数据sql

DECLARE @p_Building TABLE
    (
      id INT ,
      BidName NVARCHAR(20)
    );
DECLARE @p_Room TABLE
    (
      id INT ,
      RoomNo INT ,
      RoomArea INT ,
      Bidid INT
    );
DECLARE @p_Customer TABLE
    (
      id INT ,
      CstName NVARCHAR(20) ,
      CstTel VARCHAR(20) ,
      CstSex NVARCHAR(5)
    );
DECLARE @p_Cst2Room TABLE
    (
      id INT ,
      RoomID INT ,
      CstID INT ,
      CstNO INT
    );
INSERT  INTO @p_Building( id, BidName ) VALUES  ( 1, N'四栋' );
INSERT  INTO @p_Building( id, BidName ) VALUES  ( 2, N'一栋' );
INSERT  INTO @p_Building( id, BidName ) VALUES  ( 3, N'二栋' );
INSERT  INTO @p_Building( id, BidName ) VALUES  ( 4, N'三栋' );

INSERT INTO @p_Room( id, RoomNo, RoomArea, Bidid ) VALUES  ( 1, 101, 80, 1)
INSERT INTO @p_Room( id, RoomNo, RoomArea, Bidid ) VALUES  ( 2, 102, 80, 2)
INSERT INTO @p_Room( id, RoomNo, RoomArea, Bidid ) VALUES  ( 3, 103, 99, 3)
INSERT INTO @p_Room( id, RoomNo, RoomArea, Bidid ) VALUES  ( 4, 104, 87, 4)

INSERT INTO @p_Customer( id, CstName, CstTel, CstSex )VALUES  ( 1,N'张三','',N'')
INSERT INTO @p_Customer( id, CstName, CstTel, CstSex )VALUES  ( 2,N'李四','',N'')
INSERT INTO @p_Customer( id, CstName, CstTel, CstSex )VALUES  ( 3,N'王五','',N'')
INSERT INTO @p_Customer( id, CstName, CstTel, CstSex )VALUES  ( 4,N'赵六','',N'')

INSERT INTO @p_Cst2Room( id, RoomID, CstID, CstNO )VALUES  ( 1,1,1,1)
INSERT INTO @p_Cst2Room( id, RoomID, CstID, CstNO )VALUES  ( 2,1,2,2)
INSERT INTO @p_Cst2Room( id, RoomID, CstID, CstNO )VALUES  ( 3,1,3,3)
INSERT INTO @p_Cst2Room( id, RoomID, CstID, CstNO )VALUES  ( 4,1,4,4)

要得到下面结果:

执行以下sql:

SELECT  A.BidName AS [楼栋名称] ,
        B.RoomNo AS [房号] ,
        ( SELECT    C.CstName + ','
          FROM      @p_Customer AS C
                    INNER JOIN @p_Cst2Room AS D ON C.id = D.CstID
                                                   AND D.RoomID = B.id
        FOR
          XML PATH('')
        ) AS [客户名称] ,
        B.RoomArea AS [房间面积]
FROM    @p_Building AS A
        INNER JOIN @p_Room AS B ON A.id = B.Bidid; --AND A.id=1

要得到以下结果

SELECT  A.BidName AS [楼栋名称] ,
        CHARINDEX(SUBSTRING(A.BidName, 1, 1), '一二三四五六七八九十') AS OrderNum ,
        B.RoomNo AS [房号] ,
        B.RoomArea AS [房间面积]
FROM    @p_Building AS A
        INNER JOIN @p_Room AS B ON A.id = B.Bidid
ORDER BY CHARINDEX(SUBSTRING(A.BidName, 1, 1), '一二三四五六七八九十');

 

转载于:https://www.cnblogs.com/zhyue93/p/sql_sort.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值