[SQL] SQL 서버 교체, 특정 문자 후 모두 제거
SQLSQL 서버 교체, 특정 문자 후 모두 제거
내 데이터 외모처럼
ID MyText
1 some text; some more text
2 text again; even more text
내가 다음 왼쪽 해요 그래서 나는 세미콜론을 포함하여 내 세미콜론 후 모든 드롭 텍스트 및 업데이트 할 수 있습니다 방법 :
ID MyText
1 some text
2 text again
나는 대체 SQL 서버에보고했지만, 검사의 실행 가능한 방법을 생각할 수 없다 ";"
해결법
-
==============================
1.사용 LEFT는 CHARINDEX와 결합 :
사용 LEFT는 CHARINDEX와 결합 :
UPDATE MyTable SET MyText = LEFT(MyText, CHARINDEX(';', MyText) - 1) WHERE CHARINDEX(';', MyText) > 0
참고이 절은 세미콜론이없는 한 업데이트 행을 건너 뜁니다 곳.
여기에 작품 위의 SQL을 확인하기 위해 몇 가지 코드는 다음과 같습니다
declare @MyTable table ([id] int primary key clustered, MyText varchar(100)) insert into @MyTable ([id], MyText) select 1, 'some text; some more text' union all select 2, 'text again; even more text' union all select 3, 'text without a semicolon' union all select 4, null -- test NULLs union all select 5, '' -- test empty string union all select 6, 'test 3 semicolons; second part; third part;' union all select 7, ';' -- test semicolon by itself UPDATE @MyTable SET MyText = LEFT(MyText, CHARINDEX(';', MyText) - 1) WHERE CHARINDEX(';', MyText) > 0 select * from @MyTable
나는 다음과 같은 결과를 얻을 :
id MyText -- ------------------------- 1 some text 2 text again 3 text without a semicolon 4 NULL 5 (empty string) 6 test 3 semicolons 7 (empty string)
-
==============================
2.시대의 일부 필드는이 때 ";" 일부는 당신은 또한 필드에 세미콜론을 추가하고 설명 된 것과 동일한 방법을 사용할 수 없습니다.
시대의 일부 필드는이 때 ";" 일부는 당신은 또한 필드에 세미콜론을 추가하고 설명 된 것과 동일한 방법을 사용할 수 없습니다.
SET MyText = LEFT(MyText+';', CHARINDEX(';',MyText+';')-1)
-
==============================
3.아무 가진 사람을 떠날 때 CASE를 사용할 수 없습니다 ';' 혼자.
아무 가진 사람을 떠날 때 CASE를 사용할 수 없습니다 ';' 혼자.
SELECT CASE WHEN CHARINDEX(';', MyText) > 0 THEN LEFT(MyText, CHARINDEX(';', MyText)-1) ELSE MyText END FROM MyTable
-
==============================
4.";"사용 CHARINDEX는를 찾을 수 있습니다. ";"바로 전에 일부를 환부에 다음 문자열을 사용합니다.
";"사용 CHARINDEX는를 찾을 수 있습니다. ";"바로 전에 일부를 환부에 다음 문자열을 사용합니다.
-
==============================
5.
UPDATE MyTable SET MyText = SUBSTRING(MyText, 1, CHARINDEX(';', MyText) - 1) WHERE CHARINDEX(';', MyText) > 0
-
==============================
6.상황에 내가 정규식을 사용하여 선호하는 문자열에 대한 뭔가를 교체하거나 일치 (찾기)해야 할 때.
상황에 내가 정규식을 사용하여 선호하는 문자열에 대한 뭔가를 교체하거나 일치 (찾기)해야 할 때.
정규 표현식이 완전히 T-SQL에서 지원되지 않습니다, 때문에 당신은 CLR 기능을 사용하여 구현할 수 있습니다. 또한, 당신은 당신이 필요로 전혀 C # 또는 CLR 지식을 필요로하지 않는 것은 MSDN 문자열 유틸리티 함수 예제에서 이미 사용할 수 있습니다.
귀하의 경우, 정규 표현식을 사용하여 솔루션입니다 :
SELECT [dbo].[RegexReplace] ([MyColumn], '(;.*)', '') FROM [dbo].[MyTable]
그러나 데이터베이스에 이러한 기능을 구현하는 모든 더 복잡한 문제를 해결하는 데 도움 것입니다.
단지 [DBO]. [REGEXREPLACE] 기능을 배포 할 수 있지만 전체 문자열 유틸리티 클래스를 배포하는 당신에게 추천하는 방법을 보여주는 아래의 예.
from https://stackoverflow.com/questions/1668014/sql-server-replace-remove-all-after-certain-character by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] `REPLACE`와 MySQL에서 'INSERT ... ON DUPLICATE KEY UPDATE` 사이의 실제적인 차이점은 무엇입니까? (0) | 2020.04.19 |
---|---|
[SQL] 어떻게 MySQL의에서 여러 열을 검색하려면? (0) | 2020.04.19 |
[SQL] tmp를 테이블에 대한 MySQL의 잘못된 키 파일 만들기 여러 조인 (0) | 2020.04.19 |
[SQL] X 일 연속 확인 - 데이터베이스에 주어진 타임 스탬프를 (0) | 2020.04.19 |
[SQL] 연루되는 테이블에서 선택하는 단일 쿼리에서 여러 테이블에 INSERT 행 (0) | 2020.04.19 |