问题描述
如何在 sql Server 中删除字符串开头的非字母字符。
例如:6Hai
应该返回 Hai
而 H6ai
应该返回 H6ai
我使用的是 sql Server 2017。
解决方法
一种模式可用于替换字符串中的非字母字符,如下所示:
Declare @Temp as varchar(50)
set @Temp = '6Hai'
Declare @KeepValues as varchar(50)
Set @KeepValues = '%[^a-z]%'
While PatIndex(@KeepValues,@Temp) = 1
Set @Temp = Stuff(@Temp,1,'')
select @Temp
或者一个函数可以定义为:
Create Function [dbo].[RemoveNonAlphaCharactersFromStart](@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin
Declare @KeepValues as varchar(50)
Set @KeepValues = '%[^a-z]%'
While PatIndex(@KeepValues,'')
Return @Temp
End
并调用函数:
Select dbo.RemoveNonAlphaCharactersFromStart('6Hai')
请参阅此答案以删除所有非字母字符:https://stackoverflow.com/a/1008566/7804477
我更新了函数,只删除开头的非字母字符:
Stuff
和 PatIndex
是内置函数。
这是仅在字符串开头检查的关键条件:While PatIndex(@KeepValues,@Temp) = 1
Stuff(@Temp,'')
- 用空字符 ''
替换字符串中的第一个字符。 (第二个参数是起始位置,第三个参数表示要替换的字符数)