2010-08-02 61 views
2

这实际上适用于之前的问题,TSQL 2008 USING LTRIM(RTRIM and Still Have SpacesTSQL CASE WHEN那么syntax - 使用更换

我在写使用OMG小马语句删除非空非可见字符一个非常漫长的SELECT语句的点

(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'附近的语法不正确。

有人可以帮助我了解我失踪了吗?

回答

2

您错过了一些右侧parres。

5

您错过了您的病例陈述中的END。你看起来像你可以在ELSE中那样做,虽然这些不是强制性的 - 如果停止并且没有匹配,那么你会得到一个NULL。

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

+1 ...和REPLACE(SUBSTRING(PATINDEX(目前没有逻辑意义)... – Tahbaza 2010-08-02 23:20:44

+0

OMG,我一直在看这个代码太长了!我感谢您的意见和抬起头来..这里是什么看到我需要解决这个问题..所以非常抱歉,我错过了这个更早... 选择案例当LOAN_NUMBER不是NULL然后替换(LOAN_NUMBER,SUBSTRING(LOAN_NUMBER,PATINDEX('%[^ a-zA-Z0-9 '''''']%',LOAN_NUMBER),1),'')以LOAN_NUMBER结尾等等 – JMS49 2010-08-02 23:27:56