Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过各种键字符串获取行SQL_Sql_Sqlite - Fatal编程技术网

通过各种键字符串获取行SQL

通过各种键字符串获取行SQL,sql,sqlite,Sql,Sqlite,我有一个db,它的列名为产品id、名称、价格等。。现在,我需要通过给定字符串来获取行,如“123-cooldrink 94”。然后它获取列中包含这些字符串的行作为它们的值。对于这些,123可以是产品id/价格。但需要获取这些字符串与列匹配的行 product id price productname 123 94 Snacks 145 123 Cooldrink 如果我把文本输入为“12394”,那么结果是第一个。可能是用户类型“94 12

我有一个db,它的列名为
产品id、名称、价格等。。现在,我需要通过给定字符串来获取行,如
“123-cooldrink 94”
。然后它获取列中包含这些字符串的行作为它们的值。对于这些,123可以是
产品id/价格
。但需要获取这些字符串与列匹配的行

product id  price  productname
123          94     Snacks
145          123    Cooldrink

如果我把文本输入为“12394”,那么结果是第一个。可能是用户类型“94 123”也会显示相同的结果。

更新了一个可能的解决方案可能是将客户端上的字符串按空格分割,然后使用类似这样的查询(如果需要列中的精确匹配)

选择*
来自产品
其中产品标识位于(123,94)
或价格(123,94)

这里是演示

现在,如果需要确保同一行的两个关键字都是price或product\u id

SELECT * 
  FROM products
 WHERE (product_id = 123 AND price =  94)
    OR (product_id = 94 AND price =  123)
这里是演示

另一种方法是,如果部分匹配是确定的,则可以采用这种方法

SELECT product_id, price, productname
  FROM
(
  SELECT p.*, ',' || product_id || ',' || price || ',' || productname || ',' details
  FROM products p
)
WHERE details LIKE ',%94%,' 
   OR details LIKE ',%123%,'
   OR details LIKE ',%cool%,'
这里是演示

最终得到的解决方案

 (productname like '%value1%' or productname like '%value2%')AND
 (productnumberone like '%value1%'or productnumberone like
 '%value2%')AND (price like '%value1%'or price like '%value2%')

那么,是MySQL、MariaDB、PostgreSQL还是什么?如果您提供一些具有预期输出的示例数据,那么回答以下问题将非常有用:您使用的是什么RDBMS?没有名为SQL的RDBMS。我将sqlite用于Android,我认为全文搜索就是您要寻找的。当我在获取时使用product name、其他列作为输入时,可能需要很长时间。是的,可能需要指定所有要搜索的列以及所有可能的值(搜索关键字)。标准SQL中没有解决这个问题的灵丹妙药。
 (productname like '%value1%' or productname like '%value2%')AND
 (productnumberone like '%value1%'or productnumberone like
 '%value2%')AND (price like '%value1%'or price like '%value2%')