第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

從SQL Server中的VARCHAR中刪除非數(shù)字字符的最快方法

從SQL Server中的VARCHAR中刪除非數(shù)字字符的最快方法

躍然一笑 2019-10-28 16:57:54
我正在編寫一個(gè)導(dǎo)入實(shí)用程序,它將電話號碼用作導(dǎo)入中的唯一鍵。我需要檢查數(shù)據(jù)庫中是否不存在電話號碼。問題在于數(shù)據(jù)庫中的電話號碼可能包含破折號和括號之類的內(nèi)容,也可能包含其他內(nèi)容。我寫了一個(gè)刪除這些東西的函數(shù),問題是它很慢,并且數(shù)據(jù)庫中有成千上萬的記錄,并且一次要導(dǎo)入成千上萬的記錄,所以此過程可能會令人難以接受。我已經(jīng)將電話號碼列作為索引。我嘗試使用這篇文章中的腳本:T-SQL trim&nbsp(和其他非字母數(shù)字字符)但這并沒有加快速度。是否有刪除非數(shù)字字符的更快方法?當(dāng)必須比較10,000到100,000條記錄時(shí),某些性能會很好。無論做什么都需要快速執(zhí)行。更新鑒于人們的回應(yīng),我認(rèn)為我將必須在運(yùn)行導(dǎo)入實(shí)用程序之前清理字段。為了回答我在其中編寫導(dǎo)入實(shí)用程序的問題,它是一個(gè)C#應(yīng)用程序。我現(xiàn)在正在將BIGINT與BIGINT進(jìn)行比較,而無需更改數(shù)據(jù)庫數(shù)據(jù),而我仍然會因?yàn)楹苌俚囊唤M數(shù)據(jù)(大約2000條記錄)而對性能造成沖擊。將BIGINT與BIGINT進(jìn)行比較會降低速度嗎?我已盡我所能優(yōu)化了應(yīng)用程序的代碼方面(刪除了正則表達(dá)式,刪除了不必要的數(shù)據(jù)庫調(diào)用)。盡管我無法再將SQL隔離為問題的根源,但我仍然覺得確實(shí)如此。
查看完整描述

3 回答

?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊

我可能會誤會,但您有兩組數(shù)據(jù)要從一組中刪除數(shù)據(jù)庫中當(dāng)前數(shù)據(jù)的字符串,然后在每次導(dǎo)入時(shí)都從一組中刪除字符串。


對于更新現(xiàn)有記錄,我只會使用SQL,那只需要發(fā)生一次。


但是,SQL并未針對這種操作進(jìn)行優(yōu)化,因?yàn)槟f的是編寫導(dǎo)入實(shí)用程序,所以我將在導(dǎo)入實(shí)用程序本身而不是在SQL中進(jìn)行這些更新。這將是更好的性能選擇。您在用什么編寫實(shí)用程序?


另外,我可能會完全誤解該過程,因此,如果我偏離基準(zhǔn),我深表歉意。


編輯:

對于初始更新,如果您使用的是SQL Server 2005,則可以嘗試CLR函數(shù)。這是一個(gè)使用正則表達(dá)式的快速方法。不確定性能如何進(jìn)行比較,我自己從未使用過此功能,除非現(xiàn)在進(jìn)行快速測試。


using System;  

using System.Data;  

using System.Text.RegularExpressions;  

using System.Data.SqlClient;  

using System.Data.SqlTypes;  

using Microsoft.SqlServer.Server;  


public partial class UserDefinedFunctions  

{  

    [Microsoft.SqlServer.Server.SqlFunction]  

    public static SqlString StripNonNumeric(SqlString input)  

    {  

        Regex regEx = new Regex(@"\D");  

        return regEx.Replace(input.Value, "");  

    }  

};  

部署之后,可以使用以下命令進(jìn)行更新:


UPDATE table SET phoneNumber = dbo.StripNonNumeric(phoneNumber)


查看完整回答
反對 回復(fù) 2019-10-28
?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊

我看到了帶有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


查看完整回答
反對 回復(fù) 2019-10-28
?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(string,'a',''),'b',''),'c',''),'d',''),'e',''),'f',''),'g',''),'h',''),'i',''),'j',''),'k',''),'l',''),'m',''),'n',''),'o',''),'p',''),'q',''),'r',''),'s',''),'t',''),'u',''),'v',''),'w',''),'x',''),'y',''),'z',''),'A',''),'B',''),'C',''),'D',''),'E',''),'F',''),'G',''),'H',''),'I',''),'J',''),'K',''),'L',''),'M',''),'N',''),'O',''),'P',''),'Q',''),'R',''),'S',''),'T',''),'U',''),'V',''),'W',''),'X',''),'Y',''),'Z','')*1 AS string,


:)



查看完整回答
反對 回復(fù) 2019-10-28
  • 3 回答
  • 0 關(guān)注
  • 1687 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號