【问题标题】:TSQL CASE WHEN THEN SYNTAX - USING REPLACETSQL CASE WHEN THEN 语法 - 使用替换
【发布时间】:2010-08-03 07:18:54
【问题描述】:

这实际上适用于之前的问题,TSQL 2008 USING LTRIM(RTRIM and Still Have Spaces

我正在编写一个非常长的 SELECT 语句,使用 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

只要我检查语法,我就会收到指向 SELECT 之后的第一个 Case 语句的错误:

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

有人可以帮助我了解我缺少什么吗?

【问题讨论】:

    标签: sql sql-server tsql string


    【解决方案1】:

    您的案例陈述中缺少 END。您看起来也可以在其中使用 ELSE,尽管这些不是强制性的 - 如果离开并且没有匹配项,那么您将获得 NULL。

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

    【讨论】:

    • +1 ...和 ​​REPLACE(SUBSTRING(PATINDEX( 目前没有逻辑意义...
    • 天啊,我看这段代码太久了!感谢您的 cmets 和抬头.. 这是我需要解决的问题.. 非常抱歉我之前错过了这个... 选择 CASE WHEN LOAN_NUMBER 不为 NULL 然后替换( LOAN_NUMBER,SUBSTRING (LOAN_NUMBER,PATINDEX( ' % [^a-zA-Z0-9 '''''']% ' ,LOAN_NUMBER), 1) , ' ' ) 以 LOAN_NUMBER 结尾,以此类推
    【解决方案2】:

    你错过了一些正确的parrens。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2022-08-03
      相关资源
      最近更新 更多