【问题标题】:Can you use an asterisk (*) to filter a column in a WHERE clause under SQL Server 2008?您可以使用星号 (*) 过滤 SQL Server 2008 下 WHERE 子句中的列吗?
【发布时间】:2011-09-16 14:54:14
【问题描述】:

例如

SELECT * FROM movies WHERE director=*

【问题讨论】:

  • 这有什么意义?
  • 重点是我的应用程序将有几个可选的过滤器。如果我在我的 ASP.NET C# 类中动态创建查询,那将是一堆不必要的编码。相反,我可以将过滤器留在查询中,只更改值。这避免了很多混乱。谢谢大家!!

标签: sql sql-server sql-server-2008 select


【解决方案1】:
select * from movies where director like '%' 

这不会返回每一行:director 为 null 的行将被省略(至少对于 MSSQL)。

【讨论】:

  • 感谢您的澄清。我很高兴数据库中的所有属性都是非空的......
【解决方案2】:

如果您正在寻找由* 代表的董事,则必须将其括在单引号之间:

SELECT * FROM movies WHERE director='*'

如果您正在寻找任何导演,请留下where

【讨论】:

    【解决方案3】:

    如果您正在寻找任何导演的结果,您可以完全放弃 WHERE director= 部分。

    如果您希望进行部分匹配,您可以使用WHERE director like '%Lucas%',这将返回等效于*LUCAS*

    【讨论】:

    • 谢谢,我要解决的问题不是使用一堆 IF 语句来构建查询。使用 LIKE % 运算符,我可以使用一个查询字符串并将占位符值替换为存在的任何过滤器值。如果用户没有提供过滤器值,我只需要用 % 替换它。
    【解决方案4】:

    您需要为此使用LIKE 和通配符:

    select * from movies where director like '%'
    

    【讨论】:

      【解决方案5】:

      你可以使用 LIKE;

      SELECT * FROM movies WHERE director LIKE '%' --all
      SELECT * FROM movies WHERE director LIKE 'john landis' --exact
      SELECT * FROM movies WHERE director LIKE 'steve%berg' --with wildcard
      

      【讨论】:

      • SELECT * FROM 电影 WHERE director LIKE '%' --all :NO!这与 SELECT * FROM MOVIES WHERE DIRECTOR IS NOT NULL 相同。该查询将忽略 Director 为空的所有行。
      【解决方案6】:
      WHERE director like '%'
      

      这是语法

      【讨论】:

        【解决方案7】:

        不,您需要使用 LIKE 运算符和 % 通配符:

        SELECT * FROM movies WHERE director like '%';
        

        【讨论】:

        • 谢谢。我需要给自己买一本 T-SQL 书!
        猜你喜欢
        • 2023-03-13
        • 2013-12-06
        • 2014-03-30
        • 1970-01-01
        • 1970-01-01
        • 2012-02-09
        • 1970-01-01
        • 2020-03-21
        相关资源
        最近更新 更多