【问题标题】:How to Convert the db2 TRIM function into SQL Server [closed]如何将 db2 TRIM 函数转换为 SQL Server [关闭]
【发布时间】:2017-08-07 02:46:27
【问题描述】:

在db2数据库中:

select trim(T '0' from '00a0Bjifea00a000') 
from sysibm.sysdummy1;

我可以得到结果:00a0Bjifea00a

但是我怎样才能在 SQL Server 数据库中得到相同的结果呢?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    我能想到的最好的函数可能是这样的[source],它将支持 DB2 功能:

    CREATE FUNCTION dbo.DB2Trim
    (
        @Side NVARCHAR(10),
        @CharacterToTrim NVARCHAR(1),
        @Value NVARCHAR(4000)
    
    )
    RETURNS NVARCHAR(4000)
    AS
    BEGIN
        IF (UPPER(@Side) IN ('L','B','','LEADING','LEFT','BOTH'))
            SET @Value = REVERSE(SUBSTRING(@Value, PATINDEX('%[^'+@CharacterToTrim+']%', @Value), LEN(@Value)));
        ELSE
            SET @Value = REVERSE(@Value);
        IF (UPPER(@Side) IN ('T','R','B','','TRAILING','RIGHT','BOTH')) 
            SET @Value = REVERSE(SUBSTRING(@Value, PATINDEX('%[^'+@CharacterToTrim+']%', @Value), LEN(@Value)));
        ELSE
            SET @Value = REVERSE(@Value);
        RETURN @Value
    END
    GO
    

    用法:

    SELECT dbo.DB2Trim('T','0', '00a0Bjifea00a000');
    

    【讨论】:

      【解决方案2】:
      CREATE FUNCTION [dbo].[TRIM_T](@STR1  NVARCHAR(MAX),@STR2  NVARCHAR(MAX))
      returns  NVARCHAR(MAX)
      AS
      BEGIN
          DECLARE @len1  int
          DECLARE @len2 int
          DECLARE @start  int 
      
          IF isnull(@STR2,'')='' 
           begin 
           RETURN  @STR2
           end  
          set @len1=LEN(@STR1)
          set @len2=LEN(@STR2)
          IF @len2<@len1  
           BEGIN
            RETURN @STR2
           END 
      
          WHILE RIGHT(@STR2,@len1)=@STR1
          BEGIN
            set @STR2=STUFF(@STR2,LEN(@STR2)-@len1+1,@len1,'')
            set @len2=@len2-@len1
          END
          RETURN  @STR2
      END
      
      SELECT [dbo].[TRIM_T]('0','00a0Bjifea00a000')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-17
        • 1970-01-01
        • 1970-01-01
        • 2011-11-08
        相关资源
        最近更新 更多