选择%LIKE%子句并排除包含特定单词的结果

时间:2016-11-04 07:46:37

标签: mysql select

我最近制作了这个线程来管理数据库中的iPhone模型,以便能够通过排除最后一个单词(即容量)来选择所有不同的模型。

Select distinct first words of a field

window.onload = function() {
  var video = document.getElementById('video');
  var canvas = document.getElementById('canvas');
  var context = canvas.getContext('2d');
  var tracker = new tracking.ObjectTracker('face');
  tracker.setInitialScale(6);
  tracker.setStepSize(2);
  tracker.setEdgesDensity(0.1);
  tracking.track('#video', tracker, { camera: true });

  tracker.on('track', function(event) {
    context.clearRect(0, 0, canvas.width, canvas.height);
    event.data.forEach(function(rect) {
      context.strokeStyle = '#ff0000';
      context.strokeRect(rect.x, rect.y, rect.width, rect.height);
      context.font = '11px Helvetica';
      context.fillStyle = "#fff";
      context.fillText('x: ' + rect.x + 'px', rect.x + rect.width + 5, rect.y + 11);
      context.fillText('y: ' + rect.y + 'px', rect.x + rect.width + 5, rect.y + 22);
    });
  });
};

对于此表,我有以下输出:
Apple iPhone 4S
Apple iPhone 4
Apple iPhone 6 Plus
Apple iPhone 6

现在,我希望能够为每种型号获得可用容量。 我在考虑使用LIKE %%子句,

          +-----------+--------------------------------+
          |    id     |             model              |
          +-----------+--------------------------------+
          |     1     |      Apple iPhone 4S 16Gb      |
          |     2     |      Apple iPhone 4S 32Gb      |
          |     3     |       Apple iPhone 4 8Gb       |
          |     4     |    Apple iPhone 6 Plus 32Gb    |
          |     5     |    Apple iPhone 6 Plus 64Gb    |
          |     6     |       Apple iPhone 6 16Gb      |
          +-----------+--------------------------------+

直到出现带有'Plus'的模型才开始工作。 以iPhone 4S为例,我只需要做以下事情:

SELECT * FROM  `model` WHERE  `value_model` LIKE  '%Apple iPhone 6S%'

我有这个输入:
Apple iPhone 4S 16Gb
Apple iPhone 4S 32Gb

但对于iPhone 6,它还会在我的搜索结果中包含iPhone 6 Plus。

我怎么能通过用'Plus'排除结果来解决这个问题,但是当我要求'Plus'模型时也不能排除这个'Plus'。

提前感谢您的帮助: - )

2 个答案:

答案 0 :(得分:2)

嗨这是您的完美解决方案

SELECT * FROM  `model`
WHERE TRIM(REPLACE(NAME,SUBSTRING_INDEX(value_model,' ',-1),'')) LIKE  '%Apple iPhone 6'

答案 1 :(得分:0)

如果我理解正确:

SELECT * FROM  `model` WHERE  `value_model` LIKE  '%Apple iPhone 6%' and `value_model` NOT LIKE  '%Apple iPhone 6 Plus%'