Как написать функцию замены TSQL для замены первого выражения? - PullRequest
0 голосов
/ 25 января 2012

Я использую SSMS 2008 и ищу способ замены записей в соответствии со следующей логикой. Я хочу, чтобы все перечисленное в одном столбце находилось перед знаком вопроса. Пример текущих данных столбца:

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?
...

Обратите внимание, что он должен включать в себя только все до ПЕРВЫГО вопросительного знака, поэтому в третьей записи он должен возвращать только "ПСИХОТИЧЕСКОЕ ПОВЕДЕНИЕ", а не все, заканчивающиеся на "затем".

Как мне это написать? Я попробовал следующее выражение в TSQL, но это не сработало:

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

Ответы [ 2 ]

2 голосов
/ 26 января 2012

ПОПРОБОВАТЬ:

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

SELECT LEFT(@x,CHARINDEX('?',@x)-1)
2 голосов
/ 26 января 2012
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...