通过各种键字符串获取行SQL
我有一个db,它的列名为通过各种键字符串获取行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
产品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%')