在CASE语句中使用LIKE

时间:2010-08-04 07:58:48

标签: sql sql-server database sql-server-2008

如何在LIKE语句中使用CASE,我有这个示例脚本但不起作用。我使用MS SQL 2008

DECLARE
    @DataBaseName sysname,
    @Message char(255)

SET @DataBaseName = 'DBa';

SET @Message =
    CASE @DataBaseName 
        WHEN LIKE 'DBa'
        THEN 'Valid name'
    ELSE 'INVALID name'
    END
Print @Message;

1 个答案:

答案 0 :(得分:9)

使用LIKE我认为你需要使用CASE语句的这种形式(“搜索”形式)。 “简单”形式allows only an equality check

SET @Message =
    CASE  
        WHEN @DataBaseName LIKE 'DBa' /*As Yves points out in the comments
                                        should this be 
        WHEN @DataBaseName LIKE 'DBa%' COLLATE SQL_Latin1_General_CP1_CS_AS  */
        THEN 'Valid name'
    ELSE 'INVALID name'
    END