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"的产品。
我尝试使用包含,但对此无济于事。follwing是我使用的查询,但也不起作用:
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%'));
您需要一个 CC_1,然后您输入包含
%
。
如果xxx
为'1%',请这样做;)
ProductName LIKE '%1%%'
sqlfiddle演示在这里
另外,请参见字符串文字上的MySQL手册页。
您可以执行此操作。用%替换您的用户输入为%
示例演示代码:
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小提琴
谢谢。