MYSQL:仅当字段具有使用反对自然语言模式的匹配的文本时,才希望将单词与文本字段中的文本进行比较

时间:2019-06-15 00:06:18

标签: mysql sql

我正在使用

将某些文本与文本字段进行比较

# Configure the train OP for TRAIN mode.
    if mode == tf.estimator.ModeKeys.TRAIN:
        optimizer = tf.train.AdamOptimizer(learning_rate=0.001)
        train_op = optimizer.minimize(
            loss=loss,
            global_step=tf.train.get_global_step())
        return tf.estimator.EstimatorSpec(
            mode=mode,
            loss=loss,
            train_op=train_op,
            export_outputs={'marks': tf.estimator.export.RegressionOutput(logits)}) 

我还想将查询字符串与另一个文本字段进行比较,但是要注意的是,如果该字段包含文本,则我想排除没有匹配项的结果,但是如果文本字段为空,我不想排除结果。

换句话说,我不能只说:

WHERE MATCH(dbase-field) AGAINST('$querystring' IN NATURAL LANGUAGE MODE).

因为我相信当dbase-field2上没有匹配项时,这总是会过滤掉结果,但是我只希望d-basefield2中有东西时进行过滤。

我想做的是(伪代码):

WHERE MATCH(dbase-field) AGAINST('$querystring' IN NATURAL LANGUAGE MODE) AND 
 MATCH(dbase-field2) AGAINST('$querystring' IN NATURAL LANGUAGE MODE) 

在MYSQL中是否有可能使用CASE END做到这一点?

1 个答案:

答案 0 :(得分:1)

您应该能够:

WHERE MATCH(dbase-field) AGAINST('$querystring' IN NATURAL LANGUAGE MODE) AND 
      (dbase-field2 IS NULL OR
       MATCH(dbase-field2) AGAINST('$querystring' IN NATURAL LANGUAGE MODE) 
      )