删除类似功能前的空格 sql
Remove whitespace before like-function sql
我正在尝试为我们的客户优化搜索功能的速度和有效性。它使用 SQL 服务器 2014 在 SQL 中编码。它允许他们在数据库中搜索用户,并且应该显示名称包含他们输入的文本的所有用户(例如 "john" 应该显示"john hansen" 和 "hans johnson"。到目前为止,它运行良好,除非我们的客户在文本前后放置空格,他们正在搜索 (" john" 或 "john "。在在那种情况下,系统 returns 什么都没有.....我们正在使用 like 函数,似乎几乎不可能解决它以忽略空格。
这里的例子:
a.name LIKE '%example%' OR b.remark LIKE '%example%'
无法创建与名称中删除空格的列同步的列,因为我们无权修改数据库本身 - 只有查询。所以我想知道是否有办法在应用 like 函数之前暂时删除列字符串中的空格,但在相同的 select 中?或者如果有其他选择?我真的在这里陷入困境,因为系统的响应时间保持不变甚至通过此修改甚至有所改善也很重要......有什么想法吗?
你可以直接使用 ltrim(rtrim())
:
a.name like '%' + ltrim(rtrim('example')) + '%'
我正在尝试为我们的客户优化搜索功能的速度和有效性。它使用 SQL 服务器 2014 在 SQL 中编码。它允许他们在数据库中搜索用户,并且应该显示名称包含他们输入的文本的所有用户(例如 "john" 应该显示"john hansen" 和 "hans johnson"。到目前为止,它运行良好,除非我们的客户在文本前后放置空格,他们正在搜索 (" john" 或 "john "。在在那种情况下,系统 returns 什么都没有.....我们正在使用 like 函数,似乎几乎不可能解决它以忽略空格。
这里的例子:
a.name LIKE '%example%' OR b.remark LIKE '%example%'
无法创建与名称中删除空格的列同步的列,因为我们无权修改数据库本身 - 只有查询。所以我想知道是否有办法在应用 like 函数之前暂时删除列字符串中的空格,但在相同的 select 中?或者如果有其他选择?我真的在这里陷入困境,因为系统的响应时间保持不变甚至通过此修改甚至有所改善也很重要......有什么想法吗?
你可以直接使用 ltrim(rtrim())
:
a.name like '%' + ltrim(rtrim('example')) + '%'