2012-01-25 2 views
0

SSMS 2008을 사용 중이고 다음 논리에 따라 레코드를 바꿀 수있는 방법을 찾고 있습니다. 물음표 앞에 나오는 모든 열을 나열하고 싶습니다. 예 현재 열 데이터 :이 대신 읽고 싶은첫 번째 표현식을 대체하는 TSQL Replace 함수는 어떻게 작성합니까?

SUICIDAL? If yes, please describe 
HOMICIDAL? If yes, please describe the following 
PSYCHOTIC BEHAVIOR? If yes, please describe. If no then? 
... 

: 그것은 단지 "정신병 반환해야합니다 세 번째 레코드, 그래서 그것은 단지, 첫 번째 물음표 전에 모든 것을 포함해야

SUICIDAL? 
HOMICIDAL? 
PSYCHOTIC BEHAVIOR? 
... 

주 BEHAVIOR "와"그 다음 "으로 끝나는 모든 것이 아닙니다.

어떻게 작성합니까? 나는 TSQL에서 다음 식을 시도했지만이 작동하지 않았다는 SELECT를 들어

replace('?%',[test_details].[test_setup_details_caption],'?') 

답변

2

TRY 사용

DECLARE @x varchar(100) = 'PSYCHOTIC BEHAVIOR? If yes, please describe. If no then?' 

SELECT LEFT(@x,CHARINDEX('?',@x)-1) 
+0

고마워합니다. 나는이 대답이 더 짧기 때문에 그것을 좋아한다. 그러나 위의 대신에 "-1"을 제거해야했습니다. 그래서 그것을 읽습니다 : SELECT LEFT (@ x, CHARINDEX ('?', @ x)) – salvationishere

2
UPDATE 
    MyTable 
SET 
    MyCol = LEFT(myCol, CHARINDEX('?', myCol)-1) 
WHERE 
    CHARINDEX('?', myCol) > 0; 

, 단지

CASE 
    WHEN CHARINDEX('?', myCol) > 0 
      THEN LEFT(myCol, CHARINDEX('?', myCol)-1) 
    ELSE MyCol 
END 
관련 문제