【问题标题】:how add whitespace in string for searching menu?如何在字符串中添加空格以搜索菜单?
【发布时间】:2016-01-08 07:26:42
【问题描述】:

我尝试在网站中构建菜单搜索。示例我在数据库中有数据字符串是“Volvo XC60 B3D”或“HP Lion D19”,我尝试在搜索菜单中输入“VolvoXc60B3D”或“HPLionD19”,结果为0,我已经尝试使用%Like%Full-Text 但还是不行,我想用trim

UPDATE item SET 
name = LTRIM(RTRIM(name)), 
description = LTRIM(RTRIM(description)) 

对于数据库中的所有数据,但不确定这是一个好的解决方案,因为有时项目名称使用 - 或/如“Dell-Xps”,任何人都可以给我解决方案吗???

编辑 1 抱歉,没有使用更新,我尝试消除数据中的空格('name'),然后使用 like / full -text 选择用户寻找的数据(已删除空格)。

【问题讨论】:

  • Trim 删除前导和尾随空格,因此 trim 无济于事。
  • @Tushar:注意:Trim 仅从字符串的开头和结尾删除它们
  • @Cerbrus 已更正,leading and trailing 空格
  • 将搜索词中的所有字符替换为letter.*,因此AIM 应显示为A.*I.*M。现在将其作为正则表达式传递..
  • @AvinashRaj:这将匹配:"Ailment",当你真正想要 "Aim"

标签: mysql regex search whitespace


【解决方案1】:

尝试使用replace

UPDATE item SET 
name = REPLACE(name, ' ',''), 
description = REPLACE(description, ' ','')

如果您不想更新,可以将字段保留为搜索查询中的使用替换:

SELECT name, description 
FROM YourTable
WHERE REPLACE(name, ' ','') = 'VolvoXc60B3D' 
    AND REPLACE(description, ' ','') = 'YourDescriptionWithoutSpaces'

【讨论】:

  • 感谢您的回复,这是个好主意,但供应商的项目总是增加,所以不确定更新是否是好的解决方案。
  • @Vilthering 我只修改了你的代码:你使用了UPDATE。无论如何,我更新了我的答案。希望对你有帮助
  • 我尝试按照你的编码并得到错误,我尝试这个“选择名称,描述从项目WHERE REPLACE(名称,'','')和替换(描述,'','');
  • @Vilthering 你得到什么错误?注意:需要输入REPLACE(name, ' ','') = 'something'
  • 如果我们有很多数据是否可能?我的意思是必须用 1 替换 1?,我尝试从项目中选择 REPLACE (name," ","") 作为 NAME,但我不知道如何与 like 或 full-text 混合
【解决方案2】:

在尝试了一些查询后我明白了

select REPLACE (name," ","") AS 'FIND' 
from item 
WHERE REPLACE (name," ","") LIKE '%VolvoXc60B3D%'

感谢您尝试提供帮助。

【讨论】:

    猜你喜欢
    • 2016-04-30
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    相关资源
    最近更新 更多