2

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

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

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

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

提前致谢!周杰伦

4

3 回答 3

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

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

于 2012-09-24T02:57:36.137 回答
0

这是一个常见且麻烦的问题,通常通过在显示名称“滚石乐队”旁边包含“滚石乐队”形式的艺术家姓名的第二个字段来解决。针对前者执行搜索,但使用后者显示结果。

但是如果你被你所拥有的数据所困扰,你需要一些类似的东西:

AND UPPER(artist) LIKE 'A%'
AND ( UPPER(artist) LIKE 'A A%' OR NOT (UPPER(artist) LIKE 'A %') )
于 2012-09-24T03:05:08.733 回答
0

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

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

这样滚石乐队就会出现在荒原狼之前的名单中......

于 2012-09-24T08:14:13.047 回答