2010-08-02 4 views
2

Это на самом деле относится к предшествующему вопросу, TSQL 2008 USING LTRIM(RTRIM and Still Have SpacesTSQL СЛУЧАЙ, КОГДА ТО СИНТАКСИС - ИСПОЛЬЗОВАНИЕ ЗАМЕНЫ

Я на момент написания очень длинный ЗЕЬЕСТ с помощью OMG о Ponies удалить NON NULL не видимые символы

(WHEN PropStreetAddr is NOT NULL THEN 
    (SELECT LTRIM(RTRIM((REPLACE(PropStreetAddr, 
           SUBSTRING(PropStreetAddr, 
              PATINDEX('%[^a-zA-Z0-9 '''''']%', 
              PropStreetAddr), 
           1), '') AS PropStreetAddr) 

Запрос:

SELECT 
    CASE WHEN LOAN_NUMBER IS NOT NULL THEN 
    REPLACE(LOAN_NUMBER,SUBSTRING (LOAN_NUMBER,PATINDEX(' %[^a-zA-Z0-9 '''''']% ' , ' ') as LOAN_NUMBER. 
,CASE WHEN MERS_ID IS NOT NULL THEN 
    REPLACE( MERS_ID,SUBSTRING (MERS_ID,PATINDEX(' %[^a-zA-Z0-9 '''''']% ' , ' ') as MERS_ID 
...127 more lines of similar statements 

Как только я проверить синтаксис я получаю эту ошибку, указывающую на первый оператор Case после SELECT:

Msg 156, Level 15, State 1, Line 143 Неверный синтаксис рядом с ключевым словом 'as'.

Может кто-нибудь помочь мне понять, чего я не хватает?

ответ

5

Вам не хватает END из утверждений вашего случая. Вы выглядите так, как будто вы тоже можете делать с ELSE, хотя они не являются обязательными - если они оставлены, и ничего не получается, вы получите NULL.

CASE 
WHEN something then value1 
WHEN somethingelse then value2 
ELSE value3 
END 
+0

+1 ... и REPLACE (SUBSTRING (PATINDEX (не имеет логического смысла на данный момент) – Tahbaza

+0

OMG, я слишком долго смотрел этот код! Я ценю ваши комментарии и хедз-ап. это то, что мне нужно, чтобы исправить это. Так что очень жаль, что я пропустил это раньше ... ВЫБЕРИТЕ СЛУЧАЙ, КОГДА LOAN_NUMBER НЕ ЯВЛЯЕТСЯ ЗАМЕНИТЬ (LOAN_NUMBER, SUBSTRING (LOAN_NUMBER, PATINDEX ('% [^ a-zA-Z0-9 '' '' '']% ', LOAN_NUMBER), 1),' ') Заканчивается как LOAN_NUMBER и так далее – JMS49

Смежные вопросы