簡體   English   中英

從字符中多次存在的字符串中刪除特定字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM