如何在某些值为空的多个列中搜索多个值

时间:2019-06-22 14:59:03

标签: sqlite where-clause

我有4个用户可以输入的值,它们是必须在列值中(或一部分)的关键字,以及2个用户可以输入的值,它们不应该出现在同一列中。 如果结果正确,则应更新另一列中的字段。

我认为问题在于两个方面。

  1. 如何处理空白(搜索和/或忽略)字段。

  2. 如何将列应包含的值与列不应包含的值相结合。

我尝试了各种LIKE NOT LIKE组合,但均未达到预期效果。唯一有效的方法是用填充字段将数据填充到Empy字段。听起来不像是一个干净的解决方案。然后,当我添加“不喜欢”功能时,它不再起作用。惩罚以解决肮脏的问题。 :) 希望获得适当解决方案的支持,谢谢!

    public bool UpdateFavProgramswithStationTableProgrammes(int favid, string station, string searchword1, string searchword2, string searchword3, string searchword4, string omitword1, string omitword2)
    {
        //Stringbuilder
        try
        {
            using (var connection = new SQLiteConnection(System.IO.Path.Combine(folder, "WhatsUpDB.db")))
            {
                connection.Execute("UPDATE Programmes SET FoundFav=? WHERE (Title LIKE ? AND Title LIKE ? AND Title LIKE ? AND Title LIKE ?) AND (IFNULL(title, '') NOT LIKE ? AND IFNULL(title, '') NOT LIKE ?) AND Station=? AND Stoptime>=?", favid, searchword1, searchword2, searchword3, searchword4, omitword1, omitword2, station, DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm"));
                return true;
            }
        }
        catch (SQLiteException ex)
        {
            Log.Info("SQLiteEx", ex.Message);
            return false;
        }

例如:

用户输入(searchword1)“ Appels”和(Omitword1)“ Rotten”。结果应该是找到的记录为列值“苹果看起来很好”,从而更新了favflag(找到或收藏的标志)。

0 个答案:

没有答案