【问题标题】:query, where field contains 2 t's查询,其中字段包含 2 个 t
【发布时间】:2013-07-23 23:10:49
【问题描述】:

有没有办法执行 where 子句,它只匹配 2 t 的独立位置。

马修—— 会工作

Thanatos -- 会工作

Thanatos T -- 不会工作

汤姆—— 不会工作

我一直在谷歌上搜索,但找不到任何关于此的具体内容

感谢任何帮助

【问题讨论】:

  • 你试过LIKE '%t%t%' AND NOT LIKE '%t%t%t%' 吗?
  • hmm 没想到,以为 '%t%t%t%' 会停止 3 t,但无法停止 4 t 或更多。谢谢

标签: sql sql-server wildcard where


【解决方案1】:

你可以试试

SELECT *
FROM Table
WHERE Field LIKE '%t%t%' AND Field NOT LIKE '%t%t%t%'

我很好奇哪个更快,这个或 Goat CO 的答案。

【讨论】:

  • 我不知道哪个更快,但是斧头的回答似乎对我来说很好用。我用多达 6 t 对其进行了测试,它仍然产生了正确的结果,再次感谢
【解决方案2】:

您可以使用LEN()REPLACE()

SELECT *
FROM Table
WHERE LEN(REPLACE(field,'t','tt')) - LEN(Field) = 2

演示:SQL Fiddle

【讨论】:

  • 这不适用于像“Bob T”这样的名称。在我的测试中,SQL Server 还删除了尾随空格,从而通过了测试。但如果不是这样,这比我的回答要快一点。
  • @hatchet 。 . .解决这个问题的简单方法是:len(replace(field, 't', 'tt')) - len(field) = 2.
猜你喜欢
  • 2017-10-13
  • 1970-01-01
  • 2022-01-13
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
相关资源
最近更新 更多