【问题标题】:Use wildcard in SQL table entry在 SQL 表条目中使用通配符
【发布时间】:2012-05-29 14:09:05
【问题描述】:

我一直在寻找这样的解决方案,但到目前为止还没有积极的结果...... 我的 table 包含条目 data,例如

  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'这样的data可以理解为'8024' or '8124' or '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 谢谢大家的回答!

【问题讨论】:

  • 如果它是一个字符串并且您可以使用 Like,您是否只是在寻找 '%'。 SQL Like via W3 或者你想更具体,比如单个数字等?
  • 嗨。我想看任何角色。但为简单起见,在这种情况下只是数字。关键是,我不仅要在查询中使用通配符,还要在数据条目中使用。表中,如果还有“8_2_”这样的数据,也应该包含在返回结果中。
  • 您也可以按照 Like something with [0-9] 的答案中的描述使用。
  • 你应该把正确的答案标记为答案,或者自己做答案。

标签: sql sql-server-2008 visual-studio-2008 wildcard


【解决方案1】:
SELECT * FROM table WHERE data LIKE '8%24'

不过,这也会引入“834434224”之类的内容......

SELECT * FROM table WHERE data LIKE '8_24'

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

LIKE Command

【讨论】:

  • 我明白,但它不会返回像 8_2_ 这样的数据,如果有的话。这就是问题所在......
  • 所以您将通配符存储在数据库中并希望在搜索像 8424 这样的数字时检索它们? Vineet 的回答可能有效。
  • 终于找到了解决办法。这非常简单,只需使用:SELECT * FROM table WHERE '8424' LIKE data。谢谢!
【解决方案2】:
select * from table where data like '8[4_]24'

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

【讨论】:

  • 终于找到了解决办法。这非常简单,只需使用:SELECT * FROM table WHERE '8424' LIKE data。谢谢!
【解决方案3】:

Select * from table where data =substr('8424',0,instr(data,''))|| substr('8424',instr(data,''),length(data));

这将确保单个通配符条目

其他尝试

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

【讨论】:

  • 谢谢。我试过了,但它不起作用。我认为 data 中的 '_' 和 '%' 被理解为普通字符,而不是通配符。所以它不符合标准...
  • 终于找到了解决办法。这非常简单,只需使用:SELECT * FROM table WHERE '8424' LIKE data。谢谢!
  • @johnWhite:哎呀,直到我按Submit 回答后才看到你的cmets。请考虑将您的发现作为答案发布(并接受)。
猜你喜欢
  • 1970-01-01
  • 2015-10-19
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
相关资源
最近更新 更多