TSQL情况,然后是语法 - 使用REPLACE

JMS*_*S49 2 sql t-sql sql-server string

这实际上适用于先前的问题,TSQL 2008使用LTRIM(RTRIM和Still Have Spaces

我正在使用OMG PONIES语句编写一个非常冗长的SELECT语句来删除NON NULL非可见字符

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

查询:

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
Run Code Online (Sandbox Code Playgroud)

一旦我检查语法,我收到此错误指向SELECT后的第一个Case语句:

消息156,级别15,状态1,行143关键字'as'附近的语法不正确.

有人能帮我理解我错过的东西吗?

Wil*_*l A 5

您错过了案例陈述中的END.你看起来也可以在那里使用ELSE,尽管这些并不是强制性的 - 如果不使用也没有匹配,那么你将得到一个NULL.

CASE
 WHEN something then value1
 WHEN somethingelse then value2
 ELSE value3
END
Run Code Online (Sandbox Code Playgroud)