从数据末尾删除句号

huM*_*pty 0 sql t-sql sql-server-2008

这类似于关于 如何从数据末尾删除句号的问题

但在这种情况下,数据字段可以是这样的

MYVAL

 abcd.          ->>expected   abcd
 abcd..                       abcd
 abcd .                       abcd 
 abcd ..                      abcd
 ab.abb...                    ab.abb
Run Code Online (Sandbox Code Playgroud)

等等....

我可以做点什么

Select case when like '%.' then substring(MyVal ,1,len(MyVal )-1)
       case when like '%..' then substring(MyVal ,1,len(MyVal )-2)
Run Code Online (Sandbox Code Playgroud)

通过匹配各种模式将会有..因为这是手动方式,我正在寻找一种通用的方法,可以删除值字段后可能发生的任何数量的完全停止.

谢谢

Mik*_*son 5

select substring(MyVal, 1, len(MyVal)+1-patindex('%[^.]%', reverse(MyVal)))
Run Code Online (Sandbox Code Playgroud)

更新:
如果你想删除空格,你可以使用它.

select substring(MyVal, 1, len(MyVal)+1-patindex('%[^. ]%', reverse(MyVal)))
Run Code Online (Sandbox Code Playgroud)

SE-数据

  • @huMptyduMpty:利用我对RegEx的有限知识,在'.'之前添加一个空格.似乎有把戏 - '%[^.]%' (2认同)