Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从字符串中删除特殊字符的更好解决方案_Sql_Sql Server 2008_Function - Fatal编程技术网

Sql 从字符串中删除特殊字符的更好解决方案

Sql 从字符串中删除特殊字符的更好解决方案,sql,sql-server-2008,function,Sql,Sql Server 2008,Function,我有一张45万型号的桌子。我需要去掉模型名称中的特殊字符,并将其写入表中的新列 我有一个函数,用modelname作为输入参数替换所有模型名,并返回干净的模型名。 过程使用模型名调用上述函数。 问题是,大约需要1小时40分钟才能浏览50000条记录。以这种速度,完成这一过程将花费永远的时间!有没有更好的办法?替换本来是一个更好的解决方案,但我没有完整的特殊字符列表 Function [dbo].[RemoveSpecialCharaters] (@model nvarchar(255)) R

我有一张45万型号的桌子。我需要去掉模型名称中的特殊字符,并将其写入表中的新列

我有一个函数,用modelname作为输入参数替换所有模型名,并返回干净的模型名。 过程使用模型名调用上述函数。 问题是,大约需要1小时40分钟才能浏览50000条记录。以这种速度,完成这一过程将花费永远的时间!有没有更好的办法?替换本来是一个更好的解决方案,但我没有完整的特殊字符列表

Function 

[dbo].[RemoveSpecialCharaters] (@model nvarchar(255))
Returns nvarchar(255)

as
    BEGIN

    Declare @search varchar(50)

    SET @search ='%[^a-zA-Z0-9]%'

    while PATINDEX(@search,@model) > 0
        BEGIN
        set @model = STUFF(@model,PatIndex(@search,@model),1,'')
        END

    Return @model
    END

你能发布你用来删除特殊字符的函数吗?你要浏览你的记录吗?您使用游标还是普通update语句?这个数据库管理系统是什么?Oracle,SqlServer。。。。请将这些详细信息添加到您的问题中。@NoDisplayName将该函数添加到主帖子中。@HansKesting Oops!更新版本为SQL server 2008。我使用光标获取模型名并将其传递给函数。基本上是为每个modelname调用函数!与光标相比,更新表格集newmodelname=dbo.removespecialcharactersoldmodelname的性能如何?也许先看看有限的一套。虽然我不确定是否可以在一个事务中更新所有450.000行。