zoukankan      html  css  js  c++  java
  • [转载]实现PadLeft的SQL脚本

    C#有个函数PadLeft函数:右对齐此实例中的字符,在左边用空格或指定的 Unicode 字符填充以达到指定的总长度。SQL中我们也可能有这种需求.比如字符串希望保持7位不足7位前面用0补全. 

    1. 1 -------- 0000001  
    2. 109 ------ 0000109  
    3. 0987 ----- 0000987   

    解决方案1:使用RIGHT,REPLICATE函数 

    1. CREATE FUNCTION dbo.PadLeft 
    2. (   
    3. @len int,  
    4. @string VARCHAR(max),  
    5. @padchar CHAR(1))  
    6. RETURNS VARCHAR(255) AS  
    7. BEGIN  
    8. RETURN RIGHT(  
    9.                 REPLICATE(@padchar, @len) + CONVERT (VARCHAR(MAX), @string),  
    10.                 @len  
    11.              )  
    12. END  
    13. GO  

    解决方案2:使用REPLACESPACE函数 

    1. CREATE FUNCTION dbo.PadLeft 
    2. (   
    3. @len int,  
    4. @string VARCHAR(max),  
    5. @padchar CHAR(1))  
    6. RETURNS VARCHAR(255) AS  
    7. BEGIN  
    8. RETURN LTRIM(RTRIM(  
    9.                 CASE  
    10.                 WHEN LEN(@string) < @len  
    11.                 THEN REPLACE(SPACE(@len - LEN(@string)), ' ', @padchar) + @string  
    12.                 ELSE @string  
    13.                 END  
    14.                   )  
    15.              )  
    16. END  
    17. GO  

    解决方案3:使用REPLICATE和ISNULL函数 

    1. CREATE FUNCTION dbo.PadLeft  
    2. (  
    3.     @len int,  
    4.     @string VARCHAR(max),  
    5.     @padchar CHAR(1)  
    6. )  
    7. RETURNS VARCHAR(max)  
    8. AS  
    9. BEGIN  
    10. RETURN ISNULL(REPLICATE(@padchar, @len - LEN(@string)), '')  
    11.        + CAST(@string AS VARCHAR)  
    12. END  
    13. GO  

    调用示例: 

    1. select dbo.PadLeft(7,'123','0')  --0000123  

    原载:IT智库网 链接:http://www.it118.org/specials/c9fba99e-4401-49cf-8256-ac3c1a34c0d9/a483105c-9912-4ef6-92e8-091a28510944.htm

  • 相关阅读:
    洛谷 P4707 重返现世
    多项式总结&多项式板子
    线性常系数齐次递推
    洛谷 P2791 幼儿园篮球题
    CF Gym 102028G Shortest Paths on Random Forests
    洛谷 P4705 玩游戏
    [NOI2018]冒泡排序
    PKUSC2019 改题记录
    PKUSC2019 没约记
    Codeforces Round #557 题解【更完了】
  • 原文地址:https://www.cnblogs.com/litsword/p/2345565.html
Copyright © 2011-2022 走看看