【问题标题】:SQL 'like' expression to match all varchar values (i.e. no actual filtering done)?SQL 'like' 表达式匹配所有 varchar 值(即没有进行实际过滤)?
【发布时间】:2013-04-10 09:18:24
【问题描述】:

我想知道like 可以使用哪个表达式,它会始终匹配。也就是说,它实际上并没有过滤掉任何东西。

例如,假设下面的 SQL 返回 1000 条记录...

select * from rts.Address

...那么这也应该返回 1000 条记录...

select * from rts.Address where StreetName like 'likeExpressionHere'

我试过用这个:

select * from rts.Address where StreetName like '%%'

.. 但这仍然做了一些过滤(即丢失了一些记录)..

此外,rts.Address 表中的所有 StreetName 值都不是空值(即它们都包含一些 varchar 值)

【问题讨论】:

  • 你试过like '%'吗?

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


【解决方案1】:

这取决于您的数据,但where Streetname like '%' 应该可以工作。

例如,如果该列可以为空,则需要添加

where StreetName like '%' OR StreetName IS NULL

【讨论】:

    【解决方案2】:

    您的问题不是like,它应该可以工作。 StretName 很可能采用 NULL 值。

    你不能用like来解决这个问题,尽管你可以这样做:

    where coalesce(StreetName, '<NULL>') like '%'
    

    【讨论】:

      【解决方案3】:

      这个问题似乎很笼统。提供更多信息,例如表格的内容。也可以根据您的需要调整 sql 中的类似或位置,因此这应该没什么大不了的。以下是通配符说明 % 替代零个或多个字符 _ 一个字符的替代品 [charlist] charlist 中的任意单个字符 [^charlist] 或

      [!charlist]

      任何不在 charlistd 卡使用表中的单个字符。有关更多信息,请参阅相同的内容

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-06
        • 1970-01-01
        • 2020-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-13
        • 1970-01-01
        相关资源
        最近更新 更多