[英]Remove a specific character from string where the character exists multiple times
我有一個客戶參考,我們在處理某些工作時在內部使用它來識別客戶。 它由姓氏,郵政編碼和連字符(而不是空格)組成,然后由DATE格式的出生日期組成。
JonesM11-1BD1978-05-05
我需要從郵政編碼中刪除該連字符,因為我們不希望將其連字符,因此以這種方式存在的現有數據需要更正以匹配。
我不太了解如何從一個字符串中拔出相同字符/符號中的三個字符中的第一個而不影響其他字符。
只需使用CHARINDEX
即可獲取第一個連字符的位置,並使用STUFF
替換字符:
WITH testdata(str) AS (
SELECT 'JonesM11-1BD1978-05-05'
)
SELECT
str, STUFF(str, CHARINDEX('-', str), 1, '') AS str_fixed
FROM testdata
結果:
| str | str_fixed |
|------------------------|-----------------------|
| JonesM11-1BD1978-05-05 | JonesM111BD1978-05-05 |
我喜歡@Salman給出的答案,但這是替代方法。 我們可以嘗試將第一個連字符的字符串的兩半拼湊在一起,這是我們要刪除的郵政編碼連字符。
SELECT
str,
LEFT(str, CHARINDEX('-', str) - 1) +
RIGHT(str, LEN(str) - CHARINDEX('-', str)) AS str_fixed
FROM testdata;
您可以使用STUFF和CHARINDEX來滿足您的要求,
SELECT STUFF(col,CHARINDEX('substring',col),LEN('substring'),'replacement')FROM #temp
將您的字符串替換為col,將“-”替換為子字符串,並將其替換為空白以得到正確的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.