我有一堆LIKE状态查询.我想optizimze /解释查询,运行正常.但是,如果我复制这个:
SELECT a.*, p.ek, p.vk, p.waehrung, p.onlinepreis
FROM arts a USE INDEX (i_aktiv, i_iln, i_marke )
LEFT JOIN pls p ON
p.iln = a.iln
LEFT JOIN fbs zu
ON a.farbe = zu.farbe
WHERE a.aktiv = "ja"
AND (
a.artikelbezeichnung LIKE ?
OR a.artikelbezeichnung_lang LIKE ?
OR ( a.farbe LIKE '%decke%'
OR zu.systemfarbe LIKE '%decke%'
OR zu.systemfarbe_en LIKE '%decke%'
)
)
)
...
Run Code Online (Sandbox Code Playgroud)
作为我想要添加的参数,'%decke%'但MySQL不断抛出错误,如果我使用的话%%.
知道我做错了什么吗?
我得到的错误是:
你的SQL语法有错误....在OR附近检查...%'%'decke%'(a.farbe LIKE'%decke%'...
我如何编写mySQL查询,我正在寻找使用LIKE运算符的东西,而不是像LIKE那样?
select * from ets_fi where name like '%barcode&' <> '%barcode%';
Run Code Online (Sandbox Code Playgroud) 站点用户使用搜索表单来查询产品数据库。输入的关键字在数据库中搜索产品的标题。
public function startSearch($keywords){
$keywords = preg_split('/[\s]+/', $keywords);
$totalKeywords = count($keywords);
foreach($keywords as $key => $keyword){
$search .= '%'.$keyword.'%';
if($key != ($totalKeywords)-1){
$search .= ' AND itemTitle LIKE ';
}
}
$sql=$this->db->prepare("SELECT * FROM prodsTable WHERE itemTitle LIKE ?");
$sql->bindParam(1, $search);
$sql->execute ();
$sql->fetchALL(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
如果用户输入单个关键字,则搜索有效,但是如果使用多个关键字,则查询不会执行。
如果:$ keywords ='apple ipod'; $ search ='%apple%AND itemTitle Like%ipod%';
因此,准备好的语句应如下所示:
“从prodsTable中选择*,其中itemTitle喜欢%apple%和itemTitle喜欢%ipod%”
当两个产品的标题中同时包含“ apple”和“ ipod”时,没有结果返回。
我究竟做错了什么?
我一直在看其他帖子,比如这个和这个但是没有什么适用于我的具体情况.
我有这样一张桌子:
| Name | Reference | Etc... |
|------------|-----------------|--------------|
| John Doe | | Blah blah |
| Jane Doe | John Doe | Blah blah |
| Mike Small | Jane Doe | Blah blah |
| Steve Ex | John Doe | Blah blah |
| Mary White | Mike Small | Blah blah |
Run Code Online (Sandbox Code Playgroud)
我希望能够找到哪些名称也是其他名称的引用,并将它们转换为链接,以便用户可以单击它们并获取这是引用的名称列表.
例如,如果用户点击John Doe,他/她将获得如下表格:
| Name | Reference | Etc... |
|------------|-----------------|--------------|
| Jane Doe | John Doe | …Run Code Online (Sandbox Code Playgroud) 我在mysql查询的where语句中有以下语句:
WHERE scrap_date LIKE '%-01-%'
Run Code Online (Sandbox Code Playgroud)
我想抓住1月份scrap_date的所有数据.我收到的错误是:
"第1行的'scrap_date'列的日期时间值不正确:'% - 01-%'"
scrap_dateis 的数据类型DATETIME.不确定使用什么语法来获取1月份日期的数据,有什么建议吗?
这一个匹配 column_name like 'CharEndsHere%'
和
这个没有 column_name like 'CharEndsHere'
我知道像操作符一样会考虑尾随空格,所以我只是复制了精确的列值(带有尾随空格)并粘贴它.
有点像column_name like 'CharEndsHere '它不匹配 - 为什么?.
我没有使用'='运算符,因为列类型是ntext
我在这里缺少什么或者不应该like以这种方式使用运算符吗?
编辑:column_name like 'CharEndsHere__'(__表示空格)'CharEndsHere '是该单元格中的确切值,like以这种方式使用有效还是无效?
编辑:
这是我试过的代码,
SELECT *
FROM [DBName].[dbo].[TableName]
WHERE [DBName].[dbo].[TableName].Address1 LIKE rtrim('4379 Susquehanna Trail S ')
Run Code Online (Sandbox Code Playgroud)
我也试过没有使用rtrim,但结果相同
编辑:根据Blindy的回答,
If a comparison in a query is to return all rows with the string LIKE 'abc' (abc
without a space), all rows that start …Run Code Online (Sandbox Code Playgroud) 我使用'VW'搜索我需要一个mysql regexp模式,它只能找到VOLKSWAGEN而不是VOLKSWAGEN和VOLVO.
我先试试:
SELECT title FROM brand WHERE title REGEXP '^[VW]'
Run Code Online (Sandbox Code Playgroud)
所以我V在第一个位置获得所有记录.
我不知道怎么的条件结合V在FIRST性格和W在任何位置.
我尝试:
SELECT title FROM brand WHERE title REGEXP '^[VW]' AND title REGEXP '[VW]'
Run Code Online (Sandbox Code Playgroud)
并且还尝试使用Having子句
SELECT title FROM brand WHERE title REGEXP '[VW]' HAVING title REGEXP '^[VW]'
Run Code Online (Sandbox Code Playgroud)
我知道我们有单独的替代方案我们会有一个&®EXP 的条件吗?
提前致谢
我的SQL查询有问题,我会请求帮助.
我有这样的行:
2%
20%
a 20% b
a 2 b
a 2% b
etc.
Run Code Online (Sandbox Code Playgroud)
我想只看到字符串中包含'2%'的那些.
当我想使用以下过滤它们时:
WHERE ColA LIKE '%2%%'
Run Code Online (Sandbox Code Playgroud)
它显示了以上所有行,而不仅仅是:
2%
a 2% b
Run Code Online (Sandbox Code Playgroud)
你能帮帮我吗?
我有一张表,里面有数百万个条目.这三个领域也有一些指数city,street和name.
但是当我执行以下查询时,返回任何结果需要10秒+.
SELECT bd.*
FROM BASEDATA bd
WHERE 1=1
AND lower(city) LIKE '%city%'
AND lower(street) LIKE '%street%'
AND lower(name) LIKE '%schmidt%'
Run Code Online (Sandbox Code Playgroud)
查看解释计划时,它显示使用全表扫描而不是使用索引执行查询.
有没有办法用两个单词(或更多)创建一个where语句,但它们与给出的单词的顺序不一样?
select
i.ITEM_NUMBER as Item,
min(i.ITEM_DESCRIPTION) as Description,
i.ORGANIZATION_CODE as Org,
max(m.MANUFACTURER_NAME) as Manufacturer,
max(m.MANUFACTURERS_PARTNUMBER) as Partnumber
from mis.XXEAM_INVENTORY_REPORT_WITH_LOCATORS_CONSIGNED_MATERIAL_AND_CATEGORIES_TBL i
left outer join
mis.XXEAM_MANUFACTURING_PART_NUMBERS_TBL m on i.ITEM_NUMBER = m.ITEM_NUMBER
where
i.ITEM_DESCRIPTION like '%ALLEN BRADLEY%PLC%'
group by i.ORGANIZATION_CODE, i.ITEM_NUMBER
Run Code Online (Sandbox Code Playgroud)
我想在上面的描述文本中搜索'%ALLEN BRADLEY%PLC%'或'%PLC%ALLEN BRADLEY%'.我想避免使用OR语句,因为数据集很大并且查询可能需要很长时间.
通配符可以超过两个,我只以这两个为例.在我看来,我会更喜欢为第一个单词获取数据集,然后从该数据集中获取第二个单词.也许唯一的方法是选择进入临时表.