sql-server – 如何将LTRIM从Oracle移植到SQL Server?

将应用程序从Oracle移动到SQL Server,我有这个伪的Oracle PL / SQL:

SELECT LTRIM(MyColumn, '-, ') FROM MyTable

即我正在使用带有第二个参数的Oracle’s LTRIM,指定要从字符串左侧修剪的字符.

不幸的是,T-SQL version of LTRIM不允许我指定要修剪的字符.

目前,我对如何迁移LTRIM毫无头绪.在阅读MyColumn之后,我甚至考虑在我的托管C#应用程序中处理结果.

这对我来说看起来不那么优雅.

我的问题:

是否有任何有意义的方法可以让T-SQL获得类似LTRIM的功能来传递角色?

编辑1:

我需要从字符串的开头替换 – ,和.

例如.:

   -----, ,,, This is ,- a test,---,

会导致

This is ,- a test,---,

编辑2:

我强烈希望这不是XY problem.

也许重写我的整个查询将完全消除对LTRIM的需求,尽管我宁愿专注于尽可能地将其移植到1:1,然后质疑LTRIM的有用性.

最佳答案
从第一个不是空格,逗号或连字符的字符开始,取字符串的后缀:

declare @str varchar(100) = '   -----, ,,, This is ,- a test,---,'

select  substring(@str,patindex('%[^ ,-]%',@str),len(@str))

结果:

This is ,- a test,---,

请注意,连字符,因为它是正则表达式中的特殊字符,意思是“范围”(例如[a-z]),必须是first([^ – ,])或last([^, – ]).

转载注明原文:sql-server – 如何将LTRIM从Oracle移植到SQL Server? - 代码日志