gpt4 book ai didi

sql - 从 SQL Server 中的 VARCHAR 中删除非数字字符的最快方法

转载 作者:行者123 更新时间:2023-12-01 17:37:00 26 4
gpt4 key购买 nike

我正在编写一个导入实用程序,它使用电话号码作为导入中的唯一键。

我需要检查我的数据库中是否尚不存在该电话号码。问题是数据库中的电话号码可能包含破折号和括号之类的内容,也可能包含其他内容。我编写了一个函数来删除这些东西,问题是它,而且我的数据库中有数千条记录,并且要一次导入数千条记录,这个过程可能慢得令人无法接受。我已经将电话号码列设为索引。

我尝试使用这篇文章中的脚本:
T-SQL trim &nbsp (and other non-alphanumeric characters)

但这并没有加快速度。

有没有更快的方法来删除非数字字符?当必须比较 10,000 到 100,000 条记录时,它可以表现良好。

无论做什么都需要快速执行。

更新
鉴于人们的 react ,我想我必须在运行导入实用程序之前清理这些字段。

为了回答我在什么中编写导入实用程序的问题,它是一个 C# 应用程序。我现在正在将 BIGINT 与 BIGINT 进行比较,无需更改数据库数据,而且我仍然会因为非常小的数据集(大约 2000 条记录)而受到性能影响。

将 BIGINT 与 BIGINT 进行比较会减慢速度吗?

我已经尽可能地优化了我的应用程序的代码部分(删除了正则表达式,删除了不必要的数据库调用)。虽然我无法再将 SQL 视为问题的根源,但我仍然感觉确实如此。

最佳答案

我看到这个解决方案包含 T-SQL 代码和 PATINDEX。我喜欢它:-)

CREATE Function [fnRemoveNonNumericCharacters](@strText VARCHAR(1000))
RETURNS VARCHAR(1000)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%', @strText) > 0
BEGIN
SET @strText = STUFF(@strText, PATINDEX('%[^0-9]%', @strText), 1, '')
END
RETURN @strText
END

关于sql - 从 SQL Server 中的 VARCHAR 中删除非数字字符的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/106206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com