我试图从列中值的开头排除“A”和“The”。我正在寻找以字母“A”开头的艺术家,例如:
AND artist LIKE LOWER('A%') AND artist NOT LIKE LOWER('A %')
问题是这会给我以“A%”开头的艺术家,而不是给我以“A%”开头的艺术家,但它也会排除以“AA%”开头的艺术家
如果某个乐队决定将自己命名为“A Apple”,他们将被排除在我的搜索之外。我如何在不排除“AA%”的情况下进行此查询
提前致谢!周杰伦
我试图从列中值的开头排除“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 语句对性能不是很友好。
这是一个常见且麻烦的问题,通常通过在显示名称“滚石乐队”旁边包含“滚石乐队”形式的艺术家姓名的第二个字段来解决。针对前者执行搜索,但使用后者显示结果。
但是如果你被你所拥有的数据所困扰,你需要一些类似的东西:
AND UPPER(artist) LIKE 'A%'
AND ( UPPER(artist) LIKE 'A A%' OR NOT (UPPER(artist) LIKE 'A %') )
如果您可以控制数据库结构,特别是如果这是一个大型数据库,那么简单地添加一个包含艺术家姓名的“SearchArtist”列可能会更有益,因为它会出现在搜索中或用于排序。这样,您可以显示全名,但按可搜索名称排序:
通过 searchArtist 选择艺术家表格顺序;
这样滚石乐队就会出现在荒原狼之前的名单中......