SELECT
BrokerData.BrokerName,
Product.BAID,
Product.ProductName,
Product.ProductName,
Product.Type,
Product.RevenueFactor,
Product.VolumeFactor,
Product.PriceFactor
FROM Product
INNER JOIN BrokerData
ON Product.BAID = BrokerData.BAID
WHERE (ProductName Like '%xxx%' OR BaseProductName Like '%xxx%');
此查询将帮助用户搜索包含" xxx"的产品。但是,数据库在某些产品名称中包含%,因此,当用户输入为1%时,它将给出包含" 1"的产品。
我尝试使用CONTAINS,但它对此没有帮助。 以下是我使用CONTAINS的查询,但它也不起作用:
SELECT
BrokerData.BrokerName,
Product.BAID,
Product.ProductName,
Product.ProductName,
Product.Type,
Product.RevenueFactor,
Product.VolumeFactor,
Product.PriceFactor
FROM Product
INNER JOIN BrokerData
ON Product.BAID = BrokerData.BAID
WHERE CONTAINS ((ProductName Like '%xxx%')
OR CONTAINS (BaseProductName Like '%xxx%'));
答案 0 :(得分:2)
答案 1 :(得分:0)
你可以这样做。 将您的用户输入替换为%to \%
示例演示代码:
CREATE TABLE data_with_percent(
data VARCHAR(255)
)
INSERT INTO data_with_percent VALUES('1%');
INSERT INTO data_with_percent VALUES('2%');
INSERT INTO data_with_percent VALUES('1');
SELECT * FROM data_with_percent WHERE data LIKE CONCAT('%',REPLACE('1%', '%', '\%'),'%');
测试如下: SQL Fiddle
谢谢。