繁体   English   中英

SQL从搜索结果的开头排除“ The”

[英]SQL Exclude 'The ' from the beginning of a search result

我试图从一列中的值的开头排除'A'和'The'。 我正在搜索以字母“ A”开头的艺术家,例如:

 AND artist LIKE LOWER('A%') AND artist NOT LIKE LOWER('A %')

问题在于,这将使我的艺术家以“ A%”开头,而不是给我以“ A%”开头,但也会排除以“ AA%”开头的艺术家

如果某个乐队决定将自己命名为“ A Apple”,他们将被排除在我的搜索范围之外。 我如何在不排除'AA%'的情况下进行此查询

提前致谢! 周杰伦

AND artist LIKE ('A%')
AND (artist NOT LIKE LOWER('A %') OR artist LIKE ('A A%'))

我希望这是一个爱好或小型数据库,因为LIKE语句对性能不是很友好。

这是一个常见且麻烦的问题,通常可以通过使用第二个字段来解决,该字段包含以“ Rolling Stones,The”形式出现的艺术家姓名以及显示的名称“ The Rolling Stones”。 针对前者执行搜索,但使用后者显示结果。

但是,如果您坚持使用所获得的数据,则需要执行以下操作:

AND UPPER(artist) LIKE 'A%'
AND ( UPPER(artist) LIKE 'A A%' OR NOT (UPPER(artist) LIKE 'A %') )

如果您可以控制数据库的结构,特别是如果这是一个大型数据库,则简单地添加一个“ SearchArtist”列,其中包含艺术家的名称(可能会出现在搜索中或用于排序)可能会更有益。 这样,您可以显示全名,但按可搜索名称排序:

通过searchArtist选择艺术家表格的顺序;

这样,滚石乐队便会出现在Steppenwolf之前的列表中...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM