【问题标题】:Getting value from database using equals while ignoring certain letters使用等于从数据库中获取值,同时忽略某些字母
【发布时间】:2015-08-08 20:18:10
【问题描述】:

我在 MYSQL 中有一个名为“text”的列,它有一个值:“He?llo?”。我试图获得“He?llo?”的价值。在哪里使用等于“Hello”来获取它。它不等于因为“He?llo?”里面有两个问号,“你好”没有。我的问题是,有没有办法以某种方式从“He?llo”中删除 2 个问号?在将其与“Hello”进行比较之前,它等于?

$text = "Hello";
SELECT text FROM table WHERE text = '$text';

【问题讨论】:

  • 这是唯一的例子吗? (我在这里看不到“模式”。)

标签: php mysql regex database datatables


【解决方案1】:

你可以使用replace():

SELECT text
FROM table
WHERE replace(text, '?', '') = '$text';

【讨论】:

  • 我需要替换所有的问号、句号、逗号、感叹号和超过 1 个空格。像“你好  ? ? ? ? ?先生”将是“你好先生”。
  • @ellie 。 . .这是一个不同的问题,应该作为一个不同的问题提出。不要在 cmets 中提出新问题。
【解决方案2】:

您可以多次使用replace。但是这种方式需要进行全表扫描,如果你的表有很多行,这是低效的。

有两种选择:

  • 查看全文索引。它可以满足您的需求,如果可以,它是解决您的问题的最有效方法。
  • 添加第二列并用清理后的文本填充它。然后您可以使用索引以有效的方式比较您的文本。

【讨论】:

  • 我肯定会在那里做#2。清理数据并确保不接受垃圾应该是优先事项。
猜你喜欢
  • 2018-11-12
  • 2012-04-21
  • 1970-01-01
  • 2015-05-18
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
相关资源
最近更新 更多