【问题标题】:SQL Like filteringSQL Like 过滤
【发布时间】:2015-05-11 13:40:20
【问题描述】:

欢迎!

我目前正在研究一些 C#,但遇到了一个相当愚蠢的问题。我显然需要用数据库中的一些数据填充 ListBox。问题是 varchar 过滤。我需要过滤代码并只显示正确的代码。

代码示例为:RRTT, RRTR, RT12, RQ00, R100, R200, R355, TY44, GG77 etc. Four digit codes.

我设法用简单的select * from table1 where code_field like 'R%' 只过滤了 R 代码,但我得到了 R000 和 RQ10,我只需要得到 R 代码后跟数字。

例如:

RRTT, RRTR, RT12, RQ00, R100, R200, R355

仅:

R100, R200, R355

有什么想法可以添加到like 'R%' 吗?

【问题讨论】:

    标签: sql sql-server tsql sql-like varchar


    【解决方案1】:

    在 SQL Server 中,您可以使用通配符。这是一种方法:

    where rcode like 'R___' and       -- make sure code has four characters
          rcode not like 'R%[^0-9]%'  -- and nothing after the first one is not a number
    

    或者:

    where rcode like 'R[0-9][0-9][0-9]'
    

    在其他数据库中,您通常会使用正则表达式而不是 like 的扩展来执行此操作。

    【讨论】:

      【解决方案2】:

      这里使用like的解决方案

      SELECT *
          FROM (
          VALUES ( 'R123'),
                 ( 'R12T' ),
                 ( 'RT12' )
          ) AS t(test)
          where test like 'R[0-9][0-9][0-9]'
      

      【讨论】:

        【解决方案3】:
        like 'S[0-9%]' 
        

        朋友想出了解决办法,还是谢谢

        【讨论】:

        • 取决于 dbms。 ANSI SQL 不允许 [0-9%] 正则表达式部分。
        • @jarlh:它确实“允许”这样做 - 它只是不会将其视为正则表达式;)
        • @Dashovsky 您的示例不适用于 MSSQL,您的朋友给了您错误的解决方案
        猜你喜欢
        • 1970-01-01
        • 2015-12-19
        • 2021-08-08
        • 1970-01-01
        • 2017-01-08
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        • 1970-01-01
        相关资源
        最近更新 更多