很多時候,數據表中某個字段的值會帶有一個或多個空格字符串的情況,面對多樣化的需求,我們可能需要將這些空格字符串去除,當然,這很好說,我們可以直接用replace(' ','')將單個空格變成無就可以了,但是我們的需要往往不會這么簡單,我需要保留一個空格字符串,而我的空格字符串是不固定的。那這種情況下我們該怎么辦呢?
正因為我也遇到了這樣的問題,所以才到網上尋求解決方案,當然,下面的解決方案不是原創,我把我的理解加在其中,第一方便以后查看,第二也給遇到相同問題不知道如何解決的人更好的闡述。
sql代碼如下:
SELECT REPLACE(
REPLACE(
REPLACE(
LTRIM(RTRIM(name)),
' ',' '+'#'), --把兩個空格替換成一個空格加上特殊符號#(' #')
'#'+' ',''), --把特殊符號和一個空格('# ')替換成無''
'#','') AS NewString --如果空格總數是偶數,則最后會多一個特殊符號#,此時把#替換成無
FROM Moives
WHERE CHARINDEX(' ',name)> 0 and id=2
上述代碼中,用到了三個replace, 通常,replace有三個參數,第一個是要操作的目標字符串,第二個是被替換的字符,第三是想要替換成的字符。在這里我們想把Moives表中id為2的記錄的name字段中的空格字符串去掉並且保留一個,首先我們對它去掉首尾空格,然后把每一個操作后得到的結果當作外層操作的第一個參數。如果我們的字段中中間存在一個或多個空字符串,那么最后得到的結果始終會保留一個空格字符.
