【问题标题】:convert RTRIM (PL/SQL to T-SQL)将 RTRIM(PL/SQL 转换为 T-SQL)
【发布时间】:2014-03-31 05:26:02
【问题描述】:

我需要将此 PL-SQL 转换为 T-SQL。

rtrim([FIELDA],';')    --this from PL-SQL

rtrim 的等价物是什么?由于 t-sql 中的rtrim 只删除空格而不删除字符。

【问题讨论】:

    标签: sql-server oracle tsql plsql


    【解决方案1】:

    怎么样:

    ;with TEST(FIELDA) as (
        select ';' union
        select ';;' union
        select 'a;' union
        select ';b;' union
        select ';cc;' union
        select ';ddd;;' union
        select ';eeee;;;' union
        select 'fffff' union
        select ';ggggg' 
    )
    
    select 
        FIELDA, 
        left(FIELDA, 1 + len(FIELDA) - patindex('%[^;]%', reverse('Z' + FIELDA)))
    from TEST
    
    
    FIELDA      (No column name)
    ;   
    ;;  
    ;b;         ;b
    ;cc;        ;cc
    ;ddd;;      ;ddd
    ;eeee;;;    ;eeee
    ;ggggg      ;ggggg
    a;          a
    fffff       fffff
    

    【讨论】:

    • 这适用于 mid-string ;字符(如'hh;;hh;;')。很好的解决方案。
    【解决方案2】:

    编辑-

    这将删除右边的最后一个字符,与 LEFT 相同

    RIGHT([Field], LEN([Field])-1)
    

    虽然这假设您知道字符串末尾需要删除多少。

    【讨论】:

    • 您可以在 PL-SQL SHOW RTRIM('Last Wordxxyxy','xy') 中执行此操作,结果为“Last Word”[链接]docs.oracle.com/cd/B28359_01/olap.111/b28126/…我如何在 T-sql 中执行此操作??
    • 我不知道这个 rtrim([FIELDA],';') 在 oracle 端做什么,但我需要一个函数来在 T-sql 上做同样的事情。但我不认为它只是删除最后一个字符..
    • @telexx- 如果您点击我第一条评论中的链接。你可以看到它不仅仅是删除最后一个字符。
    猜你喜欢
    • 2013-11-08
    • 2017-06-03
    • 2020-02-25
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 2011-08-08
    • 1970-01-01
    相关资源
    最近更新 更多