【问题标题】:MySQL Select with alpha wildcards not working带有 alpha 通配符的 MySQL Select 不起作用
【发布时间】:2015-05-29 16:03:17
【问题描述】:

我有一个简单的单列表格,其中包含char(12) 的行,例如:

DRF4482   
DRF4497   
DRF451  
DRF4515  
EHF452  
FJF453  
GKF4573

我想选择DF 之间的所有行,并在末尾有4 个数字。像DRF4482DRF4497DRF4515 等。我尝试了许多不同的通配符组合,但没有得到任何行。我正在使用:

SELECT * FROM `expired` WHERE id like '%[D-F][A-Z][A-Z]____';

我什至尝试将其扩展为:

SELECT * FROM `expired` WHERE id like '%[D-F]%';

这也不会返回任何内容。

我什至根据其他一些帖子尝试过COLLATE latin1_bin,但这也没有用。我的表是utf8,但我创建了第二个表latin1,并尝试了几种不同的排序规则,结果相同——没有行。

我的错误在哪里?

【问题讨论】:

  • 很确定你想使用 REGEXP 而不是 like。

标签: mysql select wildcard


【解决方案1】:

您需要使用REGEXP 而不是LIKE。请注意,语法有点不同;它对 SQLish % 通配符没有任何作用。

所以,你想要

id REGEXP '[D-F][A-Z][A-Z][0-9]{4}'

为此应用程序。希望这些字符串中没有多字节字符,因为 MySQL 的正则表达式在这些情况下无法正常工作。

【讨论】:

    猜你喜欢
    • 2014-06-24
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 2016-09-15
    • 2021-01-06
    相关资源
    最近更新 更多