我有一個關於替換字符串中特定位置上的字符的問題。我的c#應用程序能夠讀取TXT,CSV,Excel,數據庫等文件,並將它們導入到網絡上的SQL服務器(用戶可以選擇導入文件的服務器)。該應用程序是比較兩個導入的文件與彼此。爲了改善兩個表格之間的比較,我希望能夠替換一些特定的字符。給你舉個例子。第一個導入文件中的一列有部件號,沒有任何特殊字符。第二個導入的文件也有一個與第一個導入文件具有相同部件編號的列,但只有那些部分編號在每第三個字符上用點分隔。爲了改進搜索,我從第二個導入文件中刪除所有點。這可以通過REPLACE事務輕鬆完成。查詢(也就是從我的C#應用程序exectuded,我不想做一個存儲過程,因爲服務器可以通過用戶的選擇而改變)看起來就像這樣:SQL服務器:從指定範圍內的字符串替換字符
UPDATE myTable SET myColumn = REPLACE(myColumn , '.', '');
這REPLACE語句是工作只是精細。然而我想要達到的困難部分。可以說,在第一個導入文件列有partnumbers,看起來像這樣:
5213.000
452993424.001
436345332.002
etc...
而第二個導入的文件具有相同的partnumbers只有他們是這樣的:
132.105.213.000
452.993.424.001
436.345.332.002
etc...
爲了提高之間的比較那兩列我只想刪除第一個兩個點並留下第三個點。所以REPLACE交易只能在字符4到8上執行。有沒有辦法在服務器端做到這一點?
有些事情要考慮:
- 我不想使用STUFF交易,因爲在每行字符串可能是從海誓山盟不同擾亂了更換。
- 用戶正在指定執行REPLACE交易的範圍。例如。用戶正在輸入從字符位置4到位置8的替換。
- 最好不要製作存儲過程,因爲比較服務器可能因用戶的選擇而有所不同。
- 最好從SQL版本2005開始。絕對最低版本將是SQL Server 2008.
如果需要更多信息,請在下面發表評論,以便我可以編輯我的問題!
你只需要刪除位置4和8的字符?列總是有相同的長度嗎?我不明白你不喜歡解決問題的理由 – 2014-10-22 09:56:37