0

我试图在 case 语句中连接两个字段,其中我只想要第二个字段的右侧 10 个字符。第一个字段是 25 个字符的 varchar 字段 (twfcompID);第二个字段是文本字段 (t.TransNotes)。我想最终得到看起来像 497-2059--281369.pdf 的东西。这是我的语法不起作用。

(Case
    WHEN l.TWFCompID = 'FCLMIL' THEN    
        CAST(m.MatterID AS VARCHAR(100)) + '--' + 
        RIGHT(CAST(t.TransNotes,10) AS VARCHAR(100))
    WHEN l.TWFCompID like 'f-%' THEN
        CAST(m.MatterID AS VARCHAR(100)) + '--' + (right(t.TransNotes,10) AS VARCHAR(100)) 
    WHEN l.TWFCompID like 'FS-%' THEN
        CAST(m.MatterID AS VARCHAR(100)) + '--' + CAST(right(t.TransNotes,10) AS VARCHAR(100)) 
ELSE '' END) AS 'LineItemID', 

当我运行它时,我收到错误消息:Msg 1035,Level 15,State 10,Line 5 'CAST' 附近的语法不正确,预期为 'AS'。

4

1 回答 1

0

问题似乎出在第一个WHEN子句上。RIGHT和的参数CAST混淆了。尝试这个。

WHEN l.TWFCompID = 'FCLMIL' THEN    
    CAST(m.MatterID AS VARCHAR(100)) + '--' + 
    CAST(RIGHT(t.TransNotes, 10) AS VARCHAR(100))

另一种方法是使用以下内容,它切换CASTandRIGHT语句

WHEN l.TWFCompID = 'FCLMIL' THEN    
    CAST(m.MatterID AS VARCHAR(100)) + '--' + 
    RIGHT(CAST(t.TransNotes AS VARCHAR(100)), 10)

您可能还缺少CAST第二WHEN个子句中的关键字。

于 2013-01-31T01:22:51.227 回答