4

我一直在寻找这样的解决方案,但到目前为止没有积极的结果......我的由条目数据组成,比如

  1. 1234
  2. 3241
  3. 8424
  4. 8_24
  5. 9_13
  6. 8_2_
  7. 8_25

其中 '_' 是可以从 0 到 9 的通配符。我想找到一种方法来检索这些数据,例如:SELECT * from table WHERE data LIKE '8424',查询应该返回 8424 和 8_24。

先感谢您!

PS。重点是,像‘8_24’这样的数据可以理解为‘8024’或者‘8124’或者‘8224’等,第6行也是如此。因此,如果我的查询是 SELECT * from table WHERE data LIKE '8424',它应该返回第 4 行和第 6 行。如果我使用 SELECT * from table WHERE data LIKE '8_2_',将包括第 7 行,这不是我想要的。

最后, 我找到了解决方案。非常简单,使用:SELECT * FROM table WHERE '8424' LIKE data 谢谢大家的回答!

4

3 回答 3

0
select * from table where data like '8[4_]24'

请参阅LIKE文档中的“模式”部分。您可以使用[]来指定一个范围或一组字符。

于 2012-05-23T03:29:36.690 回答
0

Select * from table where data =substr('8424',0,instr(data,' '))|| substr('8424',instr(数据,' '),长度(数据));

这将确保单个通配符条目

其他尝试

Select * from table where replace(data,'_','%') like '8424';

于 2012-05-23T03:33:48.603 回答
0
SELECT * FROM table WHERE data LIKE '8%24'

不过,这也会引入像'834434224'这样的东西......

SELECT * FROM table WHERE data LIKE '8_24'

这使用单个字符通配符 (_) 并且可以工作。

LIKE 命令

于 2012-05-23T03:23:45.760 回答