从查询中删除字符

时间:2014-03-14 14:24:43

标签: sql sql-server

假设我有一个名为Person的表和一个名为name的字段。名称字段中的数据质量很差。我想删除所有非字母字符,例如

select Replace(Replace(Replace(Name,',',''),'&',''),'@') from Person
 where Replace(Replace(Replace(Name,',',''),'&',''),'@') = @Name

@Name是传入的变量。

使用它会有很多替换语句相互缠绕。我有两个问题:

  1. 您会从名称搜索中删除哪些字符,例如所以如果有人搜索Ian O'约翰,它会找到伊恩奥约翰。
  2. 您是否会使用其他技术来执行此操作,例如PadIndex或常规 表达式

1 个答案:

答案 0 :(得分:0)

你可以这样做。

CREATE FUNCTION [db].[StringNonAlphaCharacters](@Temp VARCHAR(1000))
Returns VARCHAR(1000)
AS
Begin

    Declare @KeepValues as VARCHAR(50)
    Set @KeepValues = '%[^a-z]%'
    While PatIndex(@KeepValues, @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')    
    Return @Temp
End