猿问

如何从SQLServer中的字符串中删除所有非字母字符?

如何从SQLServer中的字符串中删除所有非字母字符?

如何从字符串中删除所有非字母字符?

那非字母数字呢?

这必须是一个自定义函数,还是也有更多可通用的解决方案?


郎朗坤
浏览 1959回答 3
3回答

jeck猫

尝试以下功能:Create Function [dbo].[RemoveNonAlphaCharacters](@Temp VarChar(1000))Returns VarChar(1000)ASBegin     Declare @KeepValues as varchar(50)     Set @KeepValues = '%[^a-z]%'     While PatIndex(@KeepValues, @Temp) > 0         Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')     Return @TempEnd就这样说吧:Select dbo.RemoveNonAlphaCharacters('abc1234def5678ghi90jkl')一旦您理解了代码,您就会发现更改它以删除其他字符也是相对简单的。您甚至可以使这个动态通过您的搜索模式。希望能帮上忙。

慕码人8056858

参数化版本G型天象' 可怕的答案:CREATE FUNCTION [dbo].[fn_StripCharacters](     @String NVARCHAR(MAX),      @MatchExpression VARCHAR(255))RETURNS NVARCHAR(MAX)ASBEGIN     SET @MatchExpression =  '%['+@MatchExpression+']%'     WHILE PatIndex(@MatchExpression, @String) > 0         SET @String = Stuff(@String, PatIndex(@MatchExpression, @String), 1, '')     RETURN @StringEND只按字母顺序排列:SELECT dbo.fn_StripCharacters('a1!s2@d3#f4$', '^a-z')仅为数字:SELECT dbo.fn_StripCharacters('a1!s2@d3#f4$', '^0-9')只有字母数字:SELECT dbo.fn_StripCharacters('a1!s2@d3#f4$', '^a-z0-9')非字母数字:SELECT dbo.fn_StripCharacters('a1!s2@d3#f4$', 'a-z0-9')

Qyouu

信不信由你,在我的系统中,这个丑陋的功能比G天象优雅的功能表现得更好。CREATE&nbsp;FUNCTION&nbsp;dbo.RemoveSpecialChar&nbsp;(@s&nbsp;VARCHAR(256))&nbsp;RETURNS&nbsp;VARCHAR(256)&nbsp;WITH&nbsp;SCHEMABINDING&nbsp;&nbsp;&nbsp;&nbsp;BEGIN &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;@s&nbsp;IS&nbsp;NULL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURN&nbsp;NULL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DECLARE&nbsp;@s2&nbsp;VARCHAR(256)&nbsp;=&nbsp;'', &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@l&nbsp;INT&nbsp;=&nbsp;LEN(@s), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@p&nbsp;INT&nbsp;=&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHILE&nbsp;@p&nbsp;<=&nbsp;@l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEGIN &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DECLARE&nbsp;@c&nbsp;INT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET&nbsp;@c&nbsp;=&nbsp;ASCII(SUBSTRING(@s,&nbsp;@p,&nbsp;1)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;@c&nbsp;BETWEEN&nbsp;48&nbsp;AND&nbsp;57 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OR&nbsp;&nbsp;@c&nbsp;BETWEEN&nbsp;65&nbsp;AND&nbsp;90 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OR&nbsp;&nbsp;@c&nbsp;BETWEEN&nbsp;97&nbsp;AND&nbsp;122 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET&nbsp;@s2&nbsp;=&nbsp;@s2&nbsp;+&nbsp;CHAR(@c) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET&nbsp;@p&nbsp;=&nbsp;@p&nbsp;+&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;LEN(@s2)&nbsp;=&nbsp;0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURN&nbsp;NULL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURN&nbsp;@s2
随时随地看视频慕课网APP
我要回答